正则表达式删除空格

时间:2012-05-15 07:30:46

标签: java regex

如何编写正则表达式以删除Java中的空格?

例如

Input  : "         "
Output : ""
---------------------
Input  : " "
Output : ""

请注意,不应删除标签和新行。只应删除空格。

修改:

我们如何进行检查?

例如,如何检查 if 语句,表明String只包含空格(任意数量)

  if(<statement>)
  {
              //inside statement
  }

对于

   input = "                   "  or input = "    "

控件应该在 if 语句中。

4 个答案:

答案 0 :(得分:13)

以下将会这样做:

str = str.replaceAll(" ", "");

可替换地:

str = str.replaceAll(" +", "");

在我的基准测试中,后者比前者快了约40%。

答案 1 :(得分:5)

String str = "     ";
str = str.replaceAll("\\s+","");

答案 2 :(得分:1)

你可以做 -

str = str.replace(" ", "");
str = str.replaceAll(" +", "");

如果您查看replacereplaceAll方法的定义 -

public String replace(CharSequence target, CharSequence replacement) {
        return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
            this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
    }

public String replaceAll(String regex, String replacement) {
   return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

除非您确实需要替换正则表达式,否则replaceAll绝对不是我们的选择。即使性能可以接受,创建的对象数量也会影响性能。

replaceAll()没有多大区别,只是正则表达式的编译时间(很可能是匹配器的执行时间)在replaceAll()的情况。 最好使用replace方法而不是replaceAll

实时比较

File size -> 6458400
replaceAll -> 94 millisecond
replace -> 78 millisecond

答案 3 :(得分:0)

为什么不试一个简单的/[ ]+/?这应该是你需要的。