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

我正在尝试在 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);

}

如您所见,我创建了一个单词计数整数,用于保存创建的标记数。然后我尝试寻找一个只包含“”的标记,然后将字数减少这些字符串的数量。然而,这并不能解决我的问题。


哆啦的时光机
浏览 157回答 3
3回答

缥缈止盈

尝试正则表达式拆分userInput.split("\\s+");

斯蒂芬大帝

您已经split()在空格上,因此任何令牌中都不会再有空格作为split()返回:通过围绕给定正则表达式的匹配拆分此字符串计算出的字符串数组(强调我的)但是,如果您String有额外的空格,则会有额外的标记,这会影响长度。而是使用split("\\s+").&nbsp;然后只返回 的长度Array,因为split()已经将返回所有由空格分隔的标记,这将是所有单词:System.out.printf("Total&nbsp;word&nbsp;count&nbsp;is:&nbsp;%d",&nbsp;tokens.length);哪个将为5测试打印String"Hello&nbsp;this&nbsp;&nbsp;&nbsp;is&nbsp;a&nbsp;String"

慕村225694

如果您打算数词,请尝试以下其中一项: 在其他人提到的那些中。在这里,此解决方案使用StringTokenizer.String words = "The Hello World&nbsp; &nbsp; &nbsp;word counter by using&nbsp; &nbsp; &nbsp;StringTokenizer";StringTokenizer st = new StringTokenizer(words);System.out.println(st.countTokens()); // => 8通过这种方式,您可以利用正则表达式按单词拆分字符串String words = "The Hello World&nbsp; &nbsp; &nbsp;word counter by using&nbsp; &nbsp; &nbsp;regex";int counter = words.split("\\w+").length;System.out.println(counter); // => 8用Scanner你自己的counter方法:public static int counter(String words) {&nbsp; &nbsp; Scanner scanner = new Scanner(words);&nbsp; &nbsp; int count = 0;&nbsp; &nbsp; while(scanner.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; count += 1;&nbsp; &nbsp; &nbsp; &nbsp; scanner.next();&nbsp; &nbsp; }&nbsp; &nbsp; return count;}如果你想像标题中所说的那样计算空格,你可以使用StringUtils来自Commonsint count = StringUtils.countMatches("The Hello World&nbsp; &nbsp; &nbsp;space counter by using&nbsp; &nbsp; &nbsp;StringUtils", " ");System.out.println(count);或者,如果您使用 Spring,SpringUtils也可以使用它。int count = StringUtils.countOccurrencesOf("The Hello World&nbsp; &nbsp; &nbsp;space counter by using&nbsp; &nbsp; &nbsp;Spring-StringUtils", " ");System.out.println(count);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java