1

私が持っているセンテンスカウンターを作成する方法を見つけようとしていますが、ピリオド/疑問符/などの後に2つのスペースがある場合にのみ、センテンスをカウントする必要があります。

たとえば、私が持っているコードでは、「こんにちは、私の名前はライアンです...」という文字列を入力すると、3 つの文のカウントが返されます。1つの文だけを数える必要があります。

このプログラムは、単語もカウントする必要があります。スペースの量をとって単語を数えます-1.これが私の問題があるところです。単語数または文数を台無しにします。

単語カウントの方法は次のとおりです。

public static int countWords(String str){
     if(str == null || str.isEmpty())
        return 0;

     int count = 0;
     for(int i = 0; i < str.length(); i++){
        if(str.charAt(i) != ' '){
           count++;
           while(str.charAt(i) != ' ' && i < str.length()-1){
              i++;
           }
        }
     }
     return count;
  }

そして、文を数えるための方法は次のとおりです。

public static int sentenceCount(String str) {
     String SENTENCE_ENDERS = ".?!";

     int sentenceCount=0;
     int lastIndex=0; 
     for(int i=0;i < str.length(); i++){  
        for(int j=0;j < SENTENCE_ENDERS.length(); j++){  
           if(str.charAt(i) == SENTENCE_ENDERS.charAt(j)){
              if(lastIndex != i-1){
                 sentenceCount++;
              }
              lastIndex = i;
           }
        }

     }
     return sentenceCount;
  }
4

1 に答える 1

3

正規表現を使用して実際に取得しましたが、これも非常に簡単でした。

public static int sentenceCount(String str) {

  String regex = "[?|!|.]+[ ]+[ ]";
  Pattern p = Pattern.compile(regex);
  int count = 0;
  Matcher m = p.matcher(str);       
  while (m.find()) {
     count++;
  }
  if (count == 0){
     return 1;
  }
  else {
     return count + 1;
  }
  }  

ユーザーが少なくとも 1 つの文を入力していると仮定して if ステートメントを追加し、最後の文の最後に 2 つのスペースを入れないと仮定してカウントに 1 を追加しました。

于 2014-05-01T18:31:39.203 に答える