问题
我有一个像这样的字符串:
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开发人员可能会说"当然,你实际上无法修改字符串",但这个问题的目标受众可能不知道这一点。)