3 回答
TA贡献1827条经验 获得超8个赞
您已经split()
在空格上,因此任何令牌中都不会再有空格作为split()
返回:
通过围绕给定正则表达式的匹配拆分此字符串计算出的字符串数组
(强调我的)但是,如果您String
有额外的空格,则会有额外的标记,这会影响长度。而是使用split("\\s+")
. 然后只返回 的长度Array
,因为split()
已经将返回所有由空格分隔的标记,这将是所有单词:
System.out.printf("Total word count is: %d", tokens.length);
哪个将为5
测试打印String
"Hello this is a String"
TA贡献1880条经验 获得超4个赞
如果您打算数词,请尝试以下其中一项: 在其他人提到的那些中。
在这里,此解决方案使用StringTokenizer.
String words = "The Hello World word counter by using StringTokenizer";
StringTokenizer st = new StringTokenizer(words);
System.out.println(st.countTokens()); // => 8
通过这种方式,您可以利用正则表达式按单词拆分字符串
String words = "The Hello World word counter by using regex";
int counter = words.split("\\w+").length;
System.out.println(counter); // => 8
用Scanner你自己的counter方法:
public static int counter(String words) {
Scanner scanner = new Scanner(words);
int count = 0;
while(scanner.hasNext()) {
count += 1;
scanner.next();
}
return count;
}
如果你想像标题中所说的那样计算空格,你可以使用StringUtils来自Commons
int count = StringUtils.countMatches("The Hello World space counter by using StringUtils", " ");
System.out.println(count);
或者,如果您使用 Spring,SpringUtils也可以使用它。
int count = StringUtils.countOccurrencesOf("The Hello World space counter by using Spring-StringUtils", " ");
System.out.println(count);
添加回答
举报