我的程序计算单词和句子,我想出了如何轻松计算单词,但我在计算句子时遇到了问题。
这是我的代码:
Scanner in = new Scanner(file);
in.useDelimiter("");
while (in.hasNext()) {
String word = in.next();
char ch = word.charAt(0);
String temp = readWord.replaceAll("...", " ").replaceAll("--", " ");
if(temp.contains(".") || (temp.contains("!") || temp.contains("?!"))) {
if(ch == '.')
sentences++;
}
}
它可以正常使用如下句子:
“嗨,我的名字是Blah。”
但它不适合这个:
“我不知道......也许他不喜欢它。”
单词计数器有效但句子计数器没有。当我告诉它用空格替换它时,它也会计算省略号。
有谁知道我做错了什么?
答案 0 :(得分:2)
replaceAll()
方法第一个参数是正则表达式(正则表达式),而不是要匹配的文字字符串。在正则表达式中,点表示“任何字符”。如果你真的想要匹配点字符,你必须在点之前使用反斜杠(如果你想在字符串文字中输入反斜杠,你需要在反斜杠之前使用另一个反斜杠。)
另一件事是replaceAll()
不会更改字符串本身,而是返回一个包含替换字符串的新字符串。
答案 1 :(得分:0)
replaceAll返回带有结果的新String,它不会更改原始String。 (字符串是不可变的,即它们不能更改)