Java 11 引入 stripLeading() 和 stripTrailing() 方法,分别去除字符串开头或结尾的 Unicode 空白字符,不改变中间内容,比 trim() 支持更广的空白字符集且语义明确。

Java 中的 stripLeading() 和 stripTrailing() 是 Java 11 引入的字符串方法,专门用于分别去除字符串**开头**或**结尾**的空白字符(Unicode 空白,比 trim() 更准确),不修改中间部分。
stripLeading():只去开头空白
该方法移除字符串左侧(前缀)所有符合 Character::isWhitespace 的字符,包括空格、制表符 、换行符
、回车符
、Unicode 空格等。
- 不会影响字符串中间或末尾的空白
- 返回新字符串,原字符串不变(String 不可变)
- 对 null 调用会抛出
NullPointerException
示例:
String s = " hello world ";String result = s.stripLeading(); // 结果为 "hello world "
stripTrailing():只去结尾空白
该方法移除字符串右侧(后缀)所有 Unicode 空白字符,逻辑与 stripLeading() 对称。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
- 保留开头和中间的空白,仅清理末尾
- 同样返回新字符串,不改变原串
- 空字符串或纯空白字符串调用后返回空字符串
示例:
String s = " hello world ";String result = s.stripTrailing(); // 结果为 " hello world"
注意与 trim() 的区别
trim() 只处理 ASCII 空格(U+0020)和控制字符( 、
、
、),而 stripLeading() / stripTrailing() 基于 Character.isWhitespace(),支持更广的 Unicode 空白,例如:
- 全角空格(U+3000)
- 零宽空格(U+200B)
- 各种语言中的段落分隔符、换行符
因此在国际化场景下更可靠。
实用建议
- 需要单侧清理时,优先用
stripLeading()或stripTrailing(),语义清晰、功能明确 - 避免用
replaceFirst("^\s+", "")或正则模拟——性能差且不识别 Unicode 空白 - 若需兼容 Java 8,可用 Apache Commons Lang 的
StringUtils.stripStart(str, null)或stripEnd(str, null) - 链式调用安全:如
s.stripLeading().stripTrailing()等价于s.strip()

















