为了账号安全,请及时绑定邮箱和手机立即绑定

空间计数器在 Java 中不起作用

空间计数器在 Java 中不起作用

哆啦的时光机 2021-12-10 16:49:14
我正在尝试在 Java 中制作一个单词计数器。我试图通过用空格分隔单词来计算单词。我已经设法用修剪功能去掉了句子前后的空格。但是,我无法针对用户在两个单词之间键入多个空格的情况进行调整。例如,到目前为止,在 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);}如您所见,我创建了一个单词计数整数,用于保存创建的标记数。然后我尝试寻找一个只包含“”的标记,然后将字数减少这些字符串的数量。然而,这并不能解决我的问题。
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

尝试正则表达式拆分

userInput.split("\\s+");


查看完整回答
反对 回复 2021-12-10
?
斯蒂芬大帝

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"


查看完整回答
反对 回复 2021-12-10
?
慕村225694

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);


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信