使用“Character.isWhiteSpace”

时间:2016-05-11 12:29:13

标签: java

我试图在不同的行上打印字符串中的所有单词。

public static void printWords ()
{
    String s = "quick  brown fox jumps over the lazy  dog";

    String[] arr = s.split(" ");    
    //System.out.println(words.length);

    for ( String ss : arr){
        System.out.println(ss);
    }
}

上面的代码有效,结果如下:

enter image description here

现在的问题是如何删除单词之间带空格的行?

我必须使用isWhiteSpace来删除空格,但它似乎不起作用。

for (int ss = 0; ss < s.length(); ss++){
char c = s.charAt(i);
if (Character.isWhiteSpace(c)) 
    //System.out.println("White Space");
    retun null;
else 
    System.out.println(ss); }

解决方案:

public class Y15Q6 {
public static void printWords(String s) {
    int i = 0;
    while (i < s.length()) {
        char c = s.charAt(i);
        if (!Character.isWhitespace(c)) {
            System.out.print(c);
            i++;
        }
        else {
            while (Character.isWhitespace(s.charAt(i)) && i < s.length())
                i++;
            System.out.print('\n');
        }
    }    
}    

}

2 个答案:

答案 0 :(得分:3)

split()采用正则表达式。因此,您可以指定正则表达式并更改此行:

String[] arr = s.split(" "); 

到:

String[] arr = s.split("[ ]+"); 

下面,

  • [ ]形成仅包含空格的字符类。
  • +要求它找到尽可能多的空格。

正如Pshemo在下面的评论中所述,我们也可以使用:

String[] arr = s.split(" +"); 

此处,+具有相同的角色。

答案 1 :(得分:1)

for (String ss : arr){
    if (!ss.isEmpty()){
        System.out.println(ss);
    }
}