我有一个简单的循环来计算输入句子。当标点符号重复一次时效果很好,但它们可以像“!!!”一样组合在一起。或者 ”???”。因此,它像不同的句子一样计算它,如果它不是标记,我应该检查下一个字符。我没有任何想法,谢谢您的宝贵时间!
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter your sentence");
String line =br.readLine();
String delimiters = "?!.";
int count=0;
for(int i=0;i<line.length();i++) {
if (delimiters.indexOf(line.charAt(i))!=-1) {
count++;
}
}
System.out.println("There are "+count+" sentences");
最佳答案
跳过重复字符,即仅在该字符与前一个字符不同时才检查它是否是分隔符。
String delimiters = "?!.";
int count = 0;
for (int i = 0; i < line.length(); i++) {
if (i == 0 || line.charAt(i) != line.charAt(i - 1)) {
if (delimiters.indexOf(line.charAt(i)) != -1) {
count++;
}
}
}
<小时/>
正如一些人在评论中建议的那样,您还可以使用正则表达式,例如像这样:
int count = line.replaceAll("([?!.])+|[^?!.]+", "$1").length();
此正则表达式解决方案仅对相邻分隔符字符进行一次计数,即使它们不同,例如如果 line = "This is a text. No a test!! Why?!?!?"
,那么您将得到 count = 3
。
关于java - 计算句子数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58942322/