无法计算文本文件中的句子 - Java

时间:2012-02-19 01:52:32

标签: java

我的程序计算单词和句子,我想出了如何轻松计算单词,但我在计算句子时遇到了问题。

这是我的代码:

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。”

但它不适合这个:

“我不知道......也许他不喜欢它。”

单词计数器有效但句子计数器没有。当我告诉它用空格替换它时,它也会计算省略号。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

replaceAll()方法第一个参数是正则表达式(正则表达式),而不是要匹配的文字字符串。在正则表达式中,点表示“任何字符”。如果你真的想要匹配点字符,你必须在点之前使用反斜杠(如果你想在字符串文字中输入反斜杠,你需要在反斜杠之前使用另一个反斜杠。)

另一件事是replaceAll()不会更改字符串本身,而是返回一个包含替换字符串的新字符串。

答案 1 :(得分:0)

replaceAll返回带有结果的新String,它不会更改原始String。 (字符串是不可变的,即它们不能更改)