2012-02-19 8 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++; 
      } 
     } 

それは次のように文で正常に動作します:

"こんにちは、私の名前はブラブラです。"

しかし、それは、この1のためにされていません。

「私は多分彼がそれを好きではない...知りません。」

単語カウンターは機能しますが、文カウンターは機能しません。私はそれを空のスペースに置き換えるように言いましたが、省略記号もそれを数えます。

私が間違っていたことを誰かが知っていますか?

答えて

2

replaceAll()replaceAll()メソッドの最初の引数は正規表現(正規表現)であり、一致するリテラル文字列ではありません。正規表現では、ドットは「任意の文字」を意味します。実際にドット文字と一致させたい場合は、ドットの前にバックスラッシュを使用する必要があります(また、文字列リテラルにバックスラッシュを入力する場合は、バックスラッシュの前に別のバックスラッシュが必要です)。

もう1つのことは、replaceAll()は文字列自体を変更しませんが、置換文字列を含む新しい文字列を返します。

+0

ええ、返された文字列を、deporterのアドバイスに従って別の文字列に割り当てました。 – watabou

0

replaceAllは新しいStringを返しますが、元のStringは変更されません。

+0

ええ、私はデポーターのアドバイスに従って別の文字列tempに割り当てました。 – watabou

関連する問題