最推荐使用 string.trim() 方法去除首尾空白字符,它基于 character.iswhitespace() 判定,适用于绝大多数场景;jdk 11+ 推荐用 strip() 替代 trim(),对全角空格等 unicode 空白支持更佳;定制需求可用正则或 apache commons lang 的 stringutils。

Java 中去除字符串首尾空格和空白字符,最常用、最推荐的方式是使用 String.trim() 方法。它能有效去掉字符串开头和结尾的 Unicode 空白字符(包括空格、制表符 、换行符
、回车符
等),但不处理中间的空白。
trim():标准去首尾空白
String.trim() 是 JDK 自带方法,简单高效,适用于绝大多数场景:
- 只影响字符串开头和结尾,中间空格保留不变
- 识别所有 Unicode 空白字符(
Character.isWhitespace(c)判定) - 原字符串不变(String 不可变),返回新字符串
示例:
String cleaned = s.trim(); // 结果:"hello world"
strip():JDK 11+ 更严格的空白处理
JDK 11 引入了 String.strip() 及相关方法,语义更清晰、行为更一致:
-
strip()和trim()功能类似,但依据Character.isWhitespace()判定,对某些 Unicode 空白(如全角空格、不换行空格u00A0)支持更好 -
stripLeading()只去开头空白,stripTrailing()只去结尾空白 - 推荐在 JDK 11+ 环境中优先用
strip()替代trim()
示例:
String s = " hellou00A0world "; // 全角空格 + 不换行空格System.out.println(s.trim()); // 仍含首尾全角/不换行空格
System.out.println(s.strip()); // 正确去除
正则替换:按需定制空白范围
若需去除特定字符(如只去空格、不去制表符),或处理更复杂逻辑(如同时去首尾空格+换行+中文全角空格),可用 replaceAll() 配合正则:
- 去首尾普通空格:
s.replaceAll("^ +| +$", "") - 去首尾任意空白(含
):
s.replaceAll("^\s+|\s+$", "") - 兼容全角空格:
s.replaceAll("^[\su3000]+|[\su3000]+$", "")
注意:正则性能略低于 trim()/strip(),且易出错,建议仅在有明确定制需求时使用。
第三方库:Apache Commons Lang(可选)
如果项目已引入 commons-lang3,可用 StringUtils 提供的增强方法:
-
StringUtils.strip(String str)—— 类似strip(),支持 null 安全 -
StringUtils.trimToNull(String str)—— 去空后若为空串则返回 null -
StringUtils.stripEnd(str, " u3000")—— 指定要移除的结尾字符集
优势在于 null 安全和灵活性,但增加依赖,非必需场景不建议只为 trim 引入。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











