我有一个字符串如下:
mysz = "name=john age=13 year=2001";
我想要移除字符串中的空格。我尝试使用trim()
,但它只能移除字符串前后的空格。我还尝试了replaceAll("\\W", "")
,但这会把=
也一并移除。我该如何得到一个没有空格的字符串?
mysz2 = "name=johnage=13year=2001"
我有一个字符串如下:
mysz = "name=john age=13 year=2001";
我想要移除字符串中的空格。我尝试使用trim()
,但它只能移除字符串前后的空格。我还尝试了replaceAll("\\W", "")
,但这会把=
也一并移除。mysz2 = "name=johnage=13year=2001"
st.replaceAll("\\s+","")
方法可以去除所有空格和不可见字符(例如制表符,\n
)。
st.replaceAll("\\s+","")
和st.replaceAll("\\s","")
产生相同的结果。
第二个正则表达式比第一个快20%,但随着连续空格数量的增加,第一个的性能优于第二个。
如果未直接使用,请将值分配给变量:
st = st.replaceAll("\\s+","")
Pattern.compile("\\s")
,因为replaceAll
会在每次调用时重新编译模式return Pattern.compile(regex).matcher(this).replaceAll(replacement);
。 - Waka WakareplaceAll("\\s","")
\w
= 匹配任何单词字符
\W
= 匹配任何非单词字符(包括标点等)
\s
= 匹配任何空格字符(包括空格、制表符等)
\S
= 匹配任何非空格字符(包括字母、数字,以及标点等)
(编辑:如指出的,如果要使用\s
匹配正则表达式引擎,则需要转义反斜杠,结果为\\s
。)
这个问题最正确的答案是:
String mysz2 = mysz.replaceAll("\\s","");
我只是从其他答案中改编了这段代码。我发表它是因为它不仅完全符合问题要求,而且还演示了结果以新字符串形式返回,原始字符串并未被修改,这一点与某些答案所暗示的不同。
(有经验的Java开发人员可能会说“当然,您实际上无法修改字符串”,但是该问题的目标受众可能并不知道这一点。)
S
,但它并不会覆盖S
所指向的字符串。 - Reinstate Monica处理字符串操作的一种方法是使用Apache Commons提供的StringUtils。
String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);
你可以在这里找到它。 commons-lang包含更多内容,并得到良好的支持。
你应该使用
s.replaceAll("\\s+", "");
代替:
s.replaceAll("\\s", "");
这种方式可以处理每个字符串之间有多个空格的情况。
上面正则表达式中的加号表示“一个或多个\s”,其中\s表示任何空格字符(包括空格、制表符等)。为什么我们需要在这里使用s+呢?
replaceAll
重复执行,直到模式不再匹配字符串的任何部分。 - nyaray+
可能会使它更加友好的CPU,因为连续的空格只需进行一次替换操作,但这是唯一的区别。确实是 All
,而不是 +
在字符串中替换非连续的空格。 - nitro2k01如果你需要同时删除不间断空格,你可以通过以下方式升级你的代码:
st.replaceAll("[\\s|\\u00A0]+", "");
" ab c "
- Mohd Farid你已经从Gursel Koca那里得到了正确的答案,但我认为这可能不是你真正想要做的事情。那么解析键值如何?
import java.util.Enumeration;
import java.util.Hashtable;
class SplitIt {
public static void main(String args[]) {
String person = "name=john age=13 year=2001";
for (String p : person.split("\\s")) {
String[] keyValue = p.split("=");
System.out.println(keyValue[0] + " = " + keyValue[1]);
}
}
}
输出:
名字 = john
年龄 = 13
年份 = 2001
最简单的方法是使用commons-lang3库中的org.apache.commons.lang3.StringUtils类,例如"commons-lang3-3.1.jar
"。
在您的输入字符串上使用静态方法"StringUtils.deleteWhitespace(String str)
",它将返回一个删除所有空格后的字符串。我尝试了你的例子字符串"name=john age=13 year=2001
",并且它确实返回了你想要的字符串 - "name=johnage=13year=2001
"。希望这能帮到你。