java里如何判断一句话里单词的个数

"ThankyouforapplyingforajobatExo-web.Itisourpleasuretowelcomeyouforaninitialtestandin... "Thank you for applying for a job at Exo-web.It is our pleasure to
welcome you for an initial testand interview's as follows"
展开
 我来答
sanglozhang
2013-07-18 · 贡献了超过124个回答
知道答主
回答量:124
采纳率:0%
帮助的人:34.2万
展开全部
BreakIterator boundary = BreakIterator.getWordInstance();
boundary.setText(s);
int start = boundary.first();
int b = 0;
for (int end = boundary.next(); end != BreakIterator.DONE; start = end, end = boundary.next()){
String sub = s.substring(start, end);
if(sub.length()>1){
b++;
}else if(sub.length() == 1){
Pattern pattern = Pattern.compile("^[a-zA-Z]$");
Matcher matcher = pattern.matcher(sub);
if ( matcher.matches() ) {
b++;
}
}
}
System.out.println(b);

应该没啥大问题
如果数字也算的话,正则表达式改成^[a-zA-Z0-9]$
。。发现bug,句号不会分割。。
可以考虑先split('.')成为字符串数组在来用这个方法。

String[] array = str.split("\\.");
int b = 0;
for (String s : array) {
BreakIterator boundary = BreakIterator.getWordInstance();
boundary.setText(s);
int start = boundary.first();

for (int end = boundary.next(); end != BreakIterator.DONE; start = end, end = boundary.next()){
String sub = s.substring(start, end);
if(sub.length()>1){
b++;
System.out.println(sub);
}else if(sub.length() == 1){
Pattern pattern = Pattern.compile("^[a-zA-Z]$");
Matcher matcher = pattern.matcher(sub);
if ( matcher.matches() ) {
b++;
System.out.println(sub);
}
}
}
}
匿名用户
2013-07-07
展开全部
String.split(' ').length()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-07
展开全部
你可以通过判断句子中空格的个数来判断单词的个数。
另外注意一下,标点符号。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式