10

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

例如

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

请注意,不应删除制表符和新行。只应删除空格。

编辑 :

我们如何进行检查?

例如,如何在if语句中检查 String 仅包含空格(任意数量)

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

为了

   input = "                   "  or input = "    "

控件应该放在if语句中。

4

4 回答 4

13

以下将做到这一点:

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

或者:

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

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

于 2012-05-15T07:32:09.187 回答
7
String str = "     ";
str = str.replaceAll("\\s+","");
于 2014-03-20T11:23:33.293 回答
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()replacereplaceAll

实时比较

File size -> 6458400
replaceAll -> 94 millisecond
replace -> 78 millisecond
于 2012-05-15T07:56:00.460 回答
0

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

于 2012-05-15T07:34:00.937 回答