Java中不使用\s如何去除字符串空格?已掌握replaceAll("\s+","")
当然有啦!不用\s的话,我们可以直接针对具体的空白字符做匹配,或者用非正则的字符串处理方式,下面给你几种实用的实现思路:
1. 直接指定要去除的空白字符(正则方式)
\s本质是正则表达式里对**普通空格、制表符(\t)、换行符(\n)、回车符(\r)、换页符(\f)**等空白字符的简写。所以我们完全可以把这些字符直接写进正则的字符类里,替代\s:
// 去除所有单个空白字符 String result = str.replaceAll("[ \t\n\r\f]", ""); // 如果要合并连续空白并去除,就加+ String result = str.replaceAll("[ \t\n\r\f]+", "");
如果还需要处理全角空格这类Unicode空白,直接把对应的字符编码加进去就行,比如:
String result = str.replaceAll("[ \t\n\r\f\u3000]", "");
(\u3000是全角空格的Unicode编码)
2. 遍历字符过滤(非正则方式)
如果不想用正则表达式,我们可以手动遍历字符串的每个字符,利用Character.isWhitespace()方法判断并过滤空白字符:
StringBuilder sb = new StringBuilder(); for (char c : str.toCharArray()) { // 只保留非空白字符 if (!Character.isWhitespace(c)) { sb.append(c); } } String result = sb.toString();
这种方法很直观,而且Character.isWhitespace()会识别所有Java定义的空白字符(和\s的覆盖范围基本一致),不需要写正则。
3. 只去除普通空格的极简写法
如果你的场景只需要去除普通的空格(不包括制表符、换行等),那更简单,直接匹配空格字符就行:
String result = str.replaceAll(" ", ""); // 或者用非正则的replace方法(效率更高) String result = str.replace(" ", "");
小提示
- 如果只处理普通空格,用
replace(" ", "")比正则方式性能更好,因为它不需要正则引擎解析。 - 如果要处理多种空白,正则字符类或者遍历过滤的方式,比用
\s更透明,你可以精确控制要去除哪些空白字符。
内容的提问来源于stack exchange,提问作者hostazc
相关产品推荐
相关产品推荐

