查看 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 token ?如果是,为什么?- 有什么方法可以将
/
区分为不同于 EOF 的不同标记。
最佳答案
根据 the documentation , /
是StreamTokenizer
中的注释符。在它之后的所有内容,直到 EOL 或 EOF 将被忽略并且不会被标记化。
例如,继续您给出的示例,如果字符串是 "Mary had 1/2\n little lamb..."
,则 2
被注释out 并且不会被标记化,并且标记化将在 \n
之后恢复。所以输出将是:
Mary
had
1.0
little
lamb...
关于java - 除法运算符的 StreamTokenizer 行为 "/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847039/