java中trim()方法去除字符串首尾unicode空白字符并返回新字符串,不修改原串;不处理中间空格、全角空格;null调用抛异常;jdk11+推荐使用功能更强的strip()。

Java 中 trim() 方法用于去除字符串首尾的空白字符(包括空格、制表符 、换行符
、回车符
等 Unicode 空白字符),但它不会修改原字符串,而是返回一个新字符串。
trim() 的基本用法
trim() 是 String 类的实例方法,调用方式简单直接:
- 调用对象必须是
String(不能是null,否则抛出NullPointerException) - 返回值是去掉首尾空白后的新字符串;原字符串不变(因为
String在 Java 中不可变) - 只处理 Unicode 中被
Character.isWhitespace(int)判定为“空白”的字符
示例:
String trimmed = s.trim(); // 结果为 "hello world"
trim() 不能去除中间或全角空格
trim() 只影响开头和结尾,对字符串中间的空格、全角空格(如中文空格 )、不间断空格( )等完全无效。
- 中间空格:如
"a b c".trim()→ 仍是"a b c" - 全角空格:
" hello ".trim()→ 返回" hello "(首尾全角空格未被识别为 whitespace) - 解决办法:需手动替换或用正则,例如
str.replaceAll("^\s+|\s+$", "")(注意仍不支持全角)
注意 null 和空字符串的安全调用
直接对 null 调用 trim() 会抛异常。常见安全写法:
- 先判空:
str != null ? str.trim() : "" - 使用
Objects.toString(str, "").trim() - JDK 11+ 可用
String.strip()(功能类似但更严格,也支持全角空白识别)
strip() 与 trim() 的区别(JDK 11+ 推荐)
strip() 是 JDK 11 引入的新方法,语义更清晰,底层基于 Character.isWhitespace(),但比 trim() 更准确识别 Unicode 空白(包括部分全角符号)。
-
" hello ".trim()→" hello "(无变化) -
" hello ".strip()→"hello"(正确去除全角空格) - 还有
stripLeading()和stripTrailing()提供更细粒度控制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











