2012-02-19 70 views
1

我的程序計算單詞和句子,我想出瞭如何很容易地計算單詞,但是我在計算句子時遇到了問題。在計算文本文件中的句子時遇到麻煩 - 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++; 
      } 
     } 

它正常工作與類似的句子: 「嗨,我的名字是嗒嗒」

但它確實沒有爲這一個:

「我不知道......也許他不喜歡它。」

詞計數器的作品,但句子計數器沒有。即使當我告訴它用一個空白空間替換它時,它也會計算省略號。

有誰知道我做錯了什麼?

回答

2

replaceAll()方法第一個參數是一個正則表達式(regex),而不是一個文字串相匹配。在正則表達式中,點表示「任何字符」。如果你真的想匹配點字符,你必須在點之前使用反斜槓(如果你想在字符串文本中輸入反斜槓,則在反斜槓之前需要另一個反斜槓)。

另一件事是replaceAll()不改變字符串本身,但返回一個新的字符串,其中包含替換。

+0

是的,我按照驅逐程序的建議將返回的字符串賦值給另一個字符串。 – watabou 2012-02-19 02:15:28

0

replaceAll返回一個帶有結果的新String,它不會更改原始String。 (字符串是不可變的,即它們不能被改變)

+0

是的,我把它分配給另一個字符串溫度跟隨驅逐者的建議。 – watabou 2012-02-19 02:10:08