计算字符串中的单词 - 跳过双空格

Kat*_*ine 4 java string split words counting

我正在开发一个程序,用于计算在文本区域中键入或粘贴的单词.如果它没有双倍空格,它会正确计算单词.我使用split方法,并使用for循环对象来计算单词.

这是代码部分最简单的形式,有一些问题......


 public static void main(String[] args) {
    String string = "Java  C++ C#";
    String[] str;
    int c=0;
    str = string.split(" ");
    for(String s:str){
        if(s.equals(" "))
            System.out.println("skipped space");
        else{
            System.out.println("--"+s);
            c++;
        }
    }
    System.out.println("words; " + c);
}
Run Code Online (Sandbox Code Playgroud)

我试图检查对象s中包含的字符串是否是一个空格但我怎么做不起作用.

我希望它像这样输出

--Java
skipped space
--C++
--C#
Run Code Online (Sandbox Code Playgroud)

话; 3

但结果是

--Java
--
--C++
--C#
words; 4
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何建议?或哪个部分我遇到了问题?提前致谢.

Pri*_*orn 7

split期待正则表达式.使用它的力量.

str = string.split(" +");

//more sophisticated
str = string.split("\\s+");
Run Code Online (Sandbox Code Playgroud)
  • \s 匹配任何空格(不仅仅是空格,还有标签.换行等)
  • + 表示"其中一个或多个"
  • 第二个反斜杠需要转义第二个以消除字符串中的特殊含义