我正在尝试用java做一个单词计数器。我试着用空格分隔单词来计算单词数。
我已经设法用trim函数去掉了句子前后的空格。但是,对于用户在两个单词之间键入多个空格的情况,我无法进行调整。例如,到目前为止,在hello和world之间有多个空格的字符串"hello world“将输出大于2的字数。这是我到目前为止尝试解决这个问题的代码。
public void countWord(){
String tokens[] = userInput.trim().split(" ");
int counter = tokens.length;
for(int i = 0; i < tokens.length; ++i) {
if(Objects.equals(" ", tokens[i])) {
--counter;
}
}
System.out.printf("Total word count is: %d", counter);
}
正如您所看到的,我创建了一个单词计数整数,用于保存创建的令牌的数量。然后,我尝试寻找一个只包含“”的标记,然后将单词count递减这些字符串的数量。然而,这并没有解决我的问题。
发布于 2018-10-28 04:48:12
尝试使用regex进行拆分
userInput.split("\\s+");
发布于 2018-10-28 04:46:28
我认为你可以很容易地通过检查一个tokens[i].equals("")
来修复它。从而检查单词是否为空字符串。由于在使用多个空格时拆分space
会在数组中创建空字符串对象,因此这应该是可行的。
发布于 2018-10-28 05:01:46
为什么不删除两个或更多相邻空格的所有匹配项,然后拆分:
String tokens[] = userInput.trim().replaceAll("\\s+", " ").split(" ");
https://stackoverflow.com/questions/53026094
复制相似问题