【问题标题】:Remove all white space using "Character.isWhiteSpace" [duplicate]使用“Character.isWhiteSpace”删除所有空白 [重复]
【发布时间】:2016-09-06 20:39:37
【问题描述】:

我正在尝试在单独的行上打印字符串中的所有单词。

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);
    }
}

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

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

我必须使用 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');
        }
    }    
}    

}

【问题讨论】:

    标签: java


    【解决方案1】:

    split() 采用正则表达式。所以你可以指定一个正则表达式并改变这一行:

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

    到:

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

    这里,

    • [ ] 构成只包含一个空格的字符类。
    • + 要求它找到尽可能多的空间。

    正如Pshemo在下面的cmets中所说,我们也可以使用:

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

    在这里,+ 也有同样的作用。

    【讨论】:

    • [] 是多余的。
    • @Pshemo 我没明白你的意思....
    • " +" 就足够了。我们不需要用"[ ]+"添加字符类。
    • @Pshemo 哦,我不知道!我认为+ 仅适用于字符类。谢谢!
    • 谢谢@Hackerdarshi," +" 工作正常。
    【解决方案2】:
    for (String ss : arr){
        if (!ss.isEmpty()){
            System.out.println(ss);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2018-08-14
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多