看一下StreamTokenizer here的演示代码。当字符串中有/
时,它似乎无法正常工作(仅在/
中的字符串之间添加StringReader
)。这是提到的链接中的代码,
StreamTokenizer tokenizer = new StreamTokenizer(
new StringReader("Mary had 1 little lamb..."));
while(tokenizer.nextToken() != StreamTokenizer.TT_EOF){
if(tokenizer.ttype == StreamTokenizer.TT_WORD) {
System.out.println(tokenizer.sval);
} else if(tokenizer.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println(tokenizer.nval);
} else if(tokenizer.ttype == StreamTokenizer.TT_EOL) {
System.out.println();
}
}
例如,对于字符串
"Mary had 1 little lamb..."
,输出为Mary
had
1.0
little
lamb...
对于字符串
"Mary had 1 /little lamb..."
,输出为Mary
had
1.0
/
是否可以用作EOF令牌?如果是这样,为什么?有什么方法可以将
/
区别为EOF以外的其他令牌。 最佳答案
根据the documentation,/
是StreamTokenizer
中的注释字符。之后的所有操作,直到EOL或EOF都将被忽略,并且不会被标记化。
例如,继续您提供的示例,如果字符串为"Mary had 1 / 2\n little lamb..."
,则会注释掉2
并且不会对其进行标记化,并且标记化将在\n
之后继续。因此输出为:
Mary
had
1.0
little
lamb...
关于java - 除法运算符“/”的StreamTokenizer行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29847039/