如何编写正则表达式以删除Java中的空格?
例如
Input : " "
Output : ""
---------------------
Input : " "
Output : ""
请注意,不应删除标签和新行。只应删除空格。
修改:
我们如何进行检查?
例如,如何检查 if 语句,表明String只包含空格(任意数量)
if(<statement>)
{
//inside statement
}
对于
input = " " or input = " "
控件应该在 if 语句中。
答案 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(" +", "");
如果您查看replace
和replaceAll
方法的定义 -
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)
为什么不试一个简单的/[ ]+/
?这应该是你需要的。