我有String
:
"Hello world... I am here. Please respond."
我想计算String
内的句子数量。我有一个想法是使用Scanner
以及useDelimiter
方法将split
任意String
用于句子。
Scanner in = new Scanner(file);
in.useDelimiter("insert here");
我想创建一个正则表达式,它可以通过我上面显示的String
并将其识别为有两个句子。我最初尝试使用分隔符:
[^?.]
它挂在省略号上。
答案 0 :(得分:1)
您可以使用正则表达式检查句子的非结尾,然后是句末,如:
[^?!.][?!.]
虽然@Gabe Sechan指出,当句子包含Dr.,Rd。,St.等缩写词时,正则表达式可能不准确。
答案 1 :(得分:1)
这可能会有所帮助:
public int getNumSentences()
{
List<String> tokens = getTokens( "[^!?.]+" );
return tokens.size();
}
您还可以添加输入按钮作为分隔符,并通过以下代码行使其独立于您的操作系统
String pattern = System.getProperty("line.separator" + " ");
实际上你可以找到更多关于
的信息因此最终方法变为:
public int getNumSentences()
{
List<String> tokens = getTokens( "[^!?.]+" + pattern + "+" );
return tokens.size();
}
希望这可以帮助:)!
答案 2 :(得分:0)
对于你的句子:“你好世界......我在这里。请回复。”
代码将是:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaRegex {
public static void main(String[] args) {
int count=0;
String sentence = "Hello world... I am here. Please respond.";
Pattern pattern = Pattern.compile("\\..");
Matcher matcher = pattern.matcher(sentence);
while(matcher.find()) {
count++;
}
System.out.println("No. of sentence = "+count);
}
}