0

有谁知道 Scanner 的 .next() 方法如何处理标点符号?我在任何地方都找不到这个问题的答案。我有一个程序从文本文件中读取每个单词,但我不确定它如何处理“那是”或“它们是”或“她”等部分。

对于句点和逗号,它们是否被视为一个单独的实体,或者如果它像“她”一样出现,它们是否被视为单词的一部分。还是她,”?根据它的作用,是“她”和“她”。还是“她”和“她”被扫描仪视为两个不同的词?

对于撇号,它们是否被考虑在内,或者它们是否有效地将单词一分为二?例如,“他们是”会被识别为“他们”“'”“re”还是完全被识别为“他们是”?

我希望我清楚地了解了这个问题。

4

3 回答 3

2

Scanner 有一种useDelimiter方法可以让您指定哪些字符将被视为“分词器”。默认分隔符是空白模式(因此标点符号将包含在单词中)

于 2011-04-24T20:21:25.860 回答
0

的默认分隔符Scanner是空格。因此,您提供的所有示例都不会被拆分。为什么不自己尝试呢?

String input = "That's a they are, her. They're here.";
Scanner scanner = new Scanner(input);
while (scanner.hasNext()) {
    System.out.println(scanner.next());
}

如果您确实想拆分类似'和 空格的内容,您可以使用以下内容:

Scanner scanner = new Scanner(input).useDelimiter("[\\s']");
于 2011-04-24T20:21:52.733 回答
0

我不知道(只是猜测),所以我自己尝试过:

    String input = "That's what they are, I told her. She said, it ain't so!";
    Scanner s = new Scanner(input); // default delimiter is whitespaces

    while (s.hasNext()) {
        System.out.println(s.next());
    }

输出:

That's
what
they
are,
I
told
her.
She
said,
it
ain't
so!
于 2011-04-24T20:22:46.657 回答