除法运算符"/"的流分词器行为



在这里看看StreamTokenizer的演示代码。当字符串中有/时,它似乎无法正常工作(只需在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 以外的其他令牌。

根据文档,/StreamTokenizer中的注释字符。在它之后的所有内容,直到EOL或EOF都将被忽略,不会被标记化。

例如,继续您给出的示例,如果字符串"Mary had 1 / 2n little lamb...",则2被注释掉并且不会被标记化,并且在n后将恢复标记化。所以输出将是:

Mary
had
1.0
little
lamb...

只是添加到上面的答案.由于/是StreamTokenizer中的注释字符,并一直持续到行尾。因此,您必须在字符串中添加新行nr所以"Mary had 1 / n little /nlamb...""Mary had 1 / r little/rlamb..."两者都会为您工作

相关内容

  • 没有找到相关文章

最新更新