我正在开发一个程序,用于计算在文本区域中键入或粘贴的单词。如果它没有双倍空格,它会正确计算单词。我为此使用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);
}
我试图检查对象s中包含的字符串是否是空格,但是我这样做是不行的。
--Java
skipped space
--C++
--C#
--Java
--
--C++
--C#
words; 4
有关如何解决此问题的任何建议?或哪个部分我遇到了问题? 提前致谢。
答案 0 :(得分:7)
split
需要正则表达式。使用它的力量。
str = string.split(" +");
//more sophisticated
str = string.split("\\s+");
\s
匹配任何空格(不仅仅是空格,还有标签。换行等)。+
表示“其中一个或多个”答案 1 :(得分:2)
您需要将行if(s.equals(" "))
更改为if(s.equals(""))
(没有空格)。
原因是split
给出了一个空格之间的数组,两个空格之间没有任何内容。
答案 2 :(得分:1)
当您从String.split
获取空字符串时,可以使用String.equals
检查返回数组中的字符串内容:
if (s.equals("")) {
...
输出:
--Java
skipped space
--C++
--C#