使用正则表达式从 Java 中删除字符串中的空格

问题

我有一个像这样的字符串:

mysz = "name=john age=13 year=2001";

我想删除字符串中的空格。我试过trim()但这只删除了整个字符串之前和之后的空格。我也试过replaceAll("\\W","")但是=也被删除了。

如何通过以下方式实现字符串:

mysz2 = "name=johnage=13year=2001"

#1 热门回答(1128 赞)

st.replaceAll("\\s","")删除所有空格和不可见字符(例如,tab,\n)。

 st.replaceAll("\\s","")st.replaceAll("\\s","")产生相同的结果。

第二个正则表达式比第一个正则表达式快20%,但随着连续空格数量的增加,第一个正则表达式优于第二个正则表达式。

如果不直接使用,请将值分配给变量:

st = st.replaceAll("\\s+","")

#2 热门回答(218 赞)

replaceAll("\\s","")

 \w =任何单词字符

 \W =任何不是单词字符的东西(包括标点等)

 \s =任何空格字符(包括空格,制表符等)

 \S =任何不是空格字符的东西(包括字母和数字,以及标点符号等)

(编辑:正如所指出的,如果你想让\s到达正则表达式引擎,你需要转义反斜杠,结果是'\s`。)


#3 热门回答(93 赞)

这个问题最正确的答案是:

String mysz2 = mysz.replaceAll("\\s","");

我刚从其他答案中修改了这段代码。我发布它是因为除了正是所要求的问题之外,它还演示了346668455结果作为新字符串返回,原始字符串未被修改**as的一些答案有点暗示。

(有经验的Java开发人员可能会说"当然,你实际上无法修改字符串",但这个问题的目标受众可能不知道这一点。)