【问题标题】:How do I get rid of the white spaces in this String[]?我如何摆脱这个字符串 [] 中的空格?
【发布时间】:2019-05-17 03:46:45
【问题描述】:

最初,我只是想获取字符串中的字符。我使用 split 来隔离我的角色以计算它们。我有我的角色,但我无法摆脱它在数组中打印的空格。

我尝试了我在其他堆栈溢出帖子中看到的所有内容。

public class Test {

 public static void main(String[] args) {
    String str = "+d+=3=+s+";
    String[] alpha = str.split("[^a-z]");
    for(int i = 0; i < alpha.length; i++) {
      alpha[i] = alpha[i].replaceAll("\\s+", "");
         System.out.println(alpha[i]);
    }

       // System.out.println(alpha.length);
    }

}

我只是想计算没有空格的字符并使用更多循环。

【问题讨论】:

  • str中没有没有空格,所以alpha中没有空格,所以replaceAll("\\s+", "")无事可做。你在说什么?

标签: java regex whitespace


【解决方案1】:

这样做

public class Test {

    public static void main(String[] args) {
        String str = "+d+=3=+s+";
        System.out.println(str);

        str = str.replaceAll("[^a-zA-Z]", "");
        System.out.println(str);
        System.out.println("count "+str.length());
    }

}

输出将是

ds
count 2

输出不包含空格,因此您可以摆脱循环

【讨论】:

    【解决方案2】:

    如果您指的是输出中的空白行,它们不是空格,它们是@987654321 中的空字符串 @数组。

    由于您的正则表达式仅匹配单个字符,split 操作将创建空条目,即 plain 拆分将生成以下数组:

    { "", "d", "", "", "", "", "s", "" }
    

    由于split 默认情况下会删除尾随的空字符串,因此您实际得到的是:

    { "", "d", "", "", "", "", "s" }
    

    如您所见,任何地方都没有空格

    您可以通过将"[^a-z]" 更改为"[^a-z]+" 来删除大部分空字符串,因此多个连续的非字母将成为一个分隔符,这将为您提供:

    { "", "d", "s" }
    

    要删除前导空字符串,请先从原始字符串中删除前导非字母:

    String[] alpha = str.replaceFirst("[^a-z]+", "").split("[^a-z]+");
    

    这会给你:

    { "d", "s" }
    

    这当然会消除输出中的所有空行:

    d
    s
    

    您可以删除 replaceAll("\\s+", "") 调用,因为它没有做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多