Java 计算句子,仅以标点符号结尾的句子+;2个空间
我想知道如何做一个句子计数器,我有,但问题是,我需要它来计算一个句子,只有当句号/问号/等后面有两个空格时 例如,使用我的代码,如果输入字符串“hello,我的名字是ryan…”,它将返回3个句子的计数。我只需要数一句话 这个程序还需要计算字数。我用空格-1来计算单词数。这就是我的问题所在,我要么搞乱了字数,要么搞乱了句子数 以下是单词计数的方法:Java 计算句子,仅以标点符号结尾的句子+;2个空间,java,string,count,words,sentence,Java,String,Count,Words,Sentence,我想知道如何做一个句子计数器,我有,但问题是,我需要它来计算一个句子,只有当句号/问号/等后面有两个空格时 例如,使用我的代码,如果输入字符串“hello,我的名字是ryan…”,它将返回3个句子的计数。我只需要数一句话 这个程序还需要计算字数。我用空格-1来计算单词数。这就是我的问题所在,我要么搞乱了字数,要么搞乱了句子数 以下是单词计数的方法: public static int countWords(String str){ if(str == null || str.isEmp
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;
}
公共静态int countWords(字符串str){
if(str==null | | str.isEmpty())
返回0;
整数计数=0;
对于(int i=0;i
下面是计算句子的方法:
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;
}
publicstaticintsentencecount(stringstr){
字符串句子_ENDERS=“.?!”;
int-sentenceCount=0;
int lastIndex=0;
对于(inti=0;i
实际上,我用正则表达式得到的结果也非常简单
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;
}
}
很好,我添加了if语句,假设用户输入了至少一个句子,并在计数中添加了一个语句,假设他们不会在最后一个句子的末尾添加两个空格。我实际上刚刚用正则表达式得到了它,实际上非常简单。发布后,我不得不等待8个小时来回答我自己的问题