我有一个程序,它接受一个字符串并计算字符串中的句子数。我有它的工作,但我无法弄清楚的一件事是,如果句子以多个分隔符结束。这是我的测试字符串“快速的棕色狐狸跳过懒狗。哇!!!!” 它应该在这个字符串中有两个句子。但它回归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++;
}
}
答案 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);
}
}