登录
首页 >  文章 >  java教程

Java 11+ String 去空方法对比

时间:2026-03-31 18:27:25 389浏览 收藏

Java 11 引入的 `strip()`、`stripLeading()` 和 `stripTrailing()` 方法,以 Unicode 标准全面取代老旧的 `trim()`,不仅能精准清除全角空格、零宽空格、行/段落分隔符等现代文本中常见却易被忽略的空白字符,还提供了更清晰语义和更灵活的首尾独立处理能力;无论你是处理国际化文本、解析用户输入,还是优化日志与配置清理逻辑,这组方法都以更高的准确性、一致性和实用性成为 Java 字符串去空的新标准——升级到 Java 11+ 后,是时候告别 `trim()` 的局限性了。

Java String trim strip stripLeading stripTrailing 对比(Java 11+)

Java 11 引入了 stripstripLeadingstripTrailing 方法,作为对传统 trim() 的增强替代。它们的核心区别在于**依据 Unicode 标准判断空白字符**,而 trim() 仅基于 ASCII 空白('\u0000''\u0020'),容易漏处理现代文本中的空白(如不换行空格、全角空格、零宽空格等)。

空白字符定义不同:trim 用 ASCII,strip 系列用 Unicode

trim() 只识别以下 26 个码点为“空白”:
' '(空格)、'\t''\n''\r''\f',以及 \u0000\u0008\u000B\u000C\u000E\u001F(即所有小于或等于 '\u0020' 的控制字符)。
strip* 方法调用 Character.isWhitespace(int),覆盖所有 Unicode 定义的空白字符,包括:

  • \u2000\u200A(各种空格,如 EN 空格、EM 空格、细空格)
  • \u2028(行分隔符)、\u2029(段落分隔符)
  • \u3000(中文全角空格)
  • \u200B(零宽空格 ZWSP)
  • 其他语言/排版中常用的空白符号

这意味着含全角空格或零宽空格的字符串,trim() 无法去除,但 strip() 可以。

功能对应关系清晰:strip ≈ trim,但更彻底

语义上完全对标:

  • str.strip() ⇨ 去除首尾所有 Unicode 空白(等价于 trim() 的“升级版”)
  • str.stripLeading() ⇨ 仅去开头 Unicode 空白(无对应传统方法)
  • str.stripTrailing() ⇨ 仅去结尾 Unicode 空白(无对应传统方法)

注意:strip() 不是 trim() 的简单包装——它重新扫描整个首尾区域,使用 isWhitespace 判断,所以性能略低但语义更准确。

null 安全与空字符串行为一致

所有四个方法对 null 都抛 NullPointerException,对空字符串("")或纯空白字符串均返回空字符串("")。无需额外判空即可链式调用(配合 Objects.requireNonNull 或 Optional 处理 null)。

实际选型建议

除非明确需要兼容 Java 8 且只处理 ASCII 文本,否则优先用 strip* 系列:

  • 通用去首尾空白 → 用 strip()
  • 只需清理开头(如日志前缀、缩进)→ 用 stripLeading()
  • 只需清理结尾(如换行残留、逗号后空格)→ 用 stripTrailing()
  • 需保留中间空白(如多空格分隔的字段)→ 所有方法都满足,因为只动首尾

若需兼容旧版本,可用 Apache Commons LangStringUtils.strip* 作为跨版本替代方案。

到这里,我们也就讲完了《Java 11+ String 去空方法对比》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>