java计算字符串中的单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java计算字符串中的单词相关的知识,希望对你有一定的参考价值。

我正在编写代码来查找字符串中的单词数量,代码如下:

package exercises;

import java.util.Scanner;

public class count {

    public static int countwords(String str){
        int count=0;
        String space="";
        String[] words=str.split(space);
        for(String word:words){
            if(word.trim().length()>0){
                count++;
            }

        }
        return count;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Enter the string");
        Scanner input=new Scanner(System.in);
    String s=input.nextLine();
    System.out.println(countwords(s));

    }

}

为了做练习,我再次编写了这段代码

package exercises;

import java.util.Scanner;

public class count {

    public static int countwords(String str){
        int count=0;
        String space="";
        String[] words=str.split(space);
        for(String word:words){
            if(word.trim().length()>0){
                count++;
            }

        }
        return count;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Enter the string");
        Scanner input=new Scanner(System.in);
    String s=input.nextLine();
    System.out.println(countwords(s));

    }

}

我只是想知道为什么这段代码的代码输出不同?虽然我逐行检查了代码,但我找不到这两个代码输出不同的原因?任何人都可以请帮助

答案

由于您的分割字符串是"",因此每个字母都将被提取为单词。

只需将String space="";改为String space=" ";String space="\s+";,你就可以了!

正则表达式工具\s+表示在一次或多次出现空格后应该拆分字符串。

另一答案
String space="";

是错的。它是一个空字符串,将被错误地使用。

你最好用

     String space="\s+"; 

要么

    String space=" ";

正则表达式“\ s +”是“一个或多个空白符号”

另一答案

另一种选择可能是这样的:

 public static void main(String[] args) {
    System.out.println("Enter the string");
    Scanner input=new Scanner(System.in);
    String line=input.nextLine();
    System.out.println(Arrays.stream(line.split(" ")).count());
}

以上是关于java计算字符串中的单词的主要内容,如果未能解决你的问题,请参考以下文章

如何通过C#中的特定片段从句子中提取整个单词?

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

21个常用代码片段

华为OD机试真题Java实现单词反转真题+解题思路+代码(2022&2023)

计算字符串最后一个单词的长度

spark 例子wordcount topk