算一下句子数

时间:2013-10-25 23:22:41

标签: java

我有一个程序,它接受一个字符串并计算字符串中的句子数。我有它的工作,但我无法弄清楚的一件事是,如果句子以多个分隔符结束。这是我的测试字符串“快速的棕色狐狸跳过懒狗。哇!!!!” 它应该在这个字符串中有两个句子。但它回归4它基本上是在Wow结束时计算三个感叹号!!!!我们只允许使用您看到的内容,因此我无法使用数组。

这就是SENTENCE_DELIMETERS =“。,::?!”中的内容。变量

感谢任何帮助。

int  sentenceCount=0;
for(int i=0;i<myFile.length()-1;i++){  
  for(int j=0;j<SENTENCE_DELIMETERS.length();j++){  
      if(myFile.charAt(i)==SENTENCE_DELIMETERS.charAt(j))  
          sentenceCount++;
          }
    }

4 个答案:

答案 0 :(得分:3)

您只需要一行:

int count = str.split("[!?.:]+").length;

加号导致多个分隔符被视为一个分隔符,从而解决您的特定问题。

注意:逗号,不是句子分隔符。

如果绝对必须使用(不正确的)变量,请从中构建正则表达式:

split("[" + SENTENCE_DELIMETERS + "]+")

答案 1 :(得分:2)

如果您不允许使用数组或列表,并且SENTENCE_DELIMITERS是一个字符串,我会做这样的事情:

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

答案 2 :(得分:2)

我会这样做

    String SENTENCE_DELIMETERS = "!.";
    int sentenceCount = 0;
    for (int i = 0; i < myFile.length() - 1; i++) {
        if (SENTENCE_DELIMETERS.indexOf(myFile.charAt(i)) != -1 && i > 0 &&  SENTENCE_DELIMETERS.indexOf(myFile.charAt(i - 1)) != -1) {
                sentenceCount++;
        }
    }

答案 3 :(得分:1)

我就是这样做的:

// By Nishanth Chandradas
public class SentenceCounter {

  public static void main(String[] args) {
        int  sentenceCount=1;
        String myFile = "The quick brown fox jumps over the lazy dog. Wow!!!!";
        String SENTENCE_DELIMETERS = ".,::?!";
        for(int i=0;i<myFile .length()-1;i++){  
          for(int j=0;j<SENTENCE_DELIMETERS.length();j++){  
              if(myFile.charAt(i)==SENTENCE_DELIMETERS.charAt(j)){
                  if(myFile.charAt(i+1)==SENTENCE_DELIMETERS.charAt(j)){
                      sentenceCount--;}
                  sentenceCount++;  } } }
    System.out.println(sentenceCount);
    }

}