在其他变化中,JDK 11 为 java.lang.String 类引入了 6 个新方法:
repeat(int)
- 根据int
参数提供的字符串重复次数lines()
- 使用Spliterator懒惰地提供来自源字符串的行isBlank()
- 指示字符串是否为空或仅包含空白字符stripLeading()
- 删除开头的空白stripTrailing()
- 删除末尾的空白strip()
- 删除字符串开头和结尾的空格
特别是, strip()
看起来非常类似于 trim()
。根据 本文 strip*()
方法旨在:
String.strip()、String.stripLeading() 和 String.stripTrailing() 方法修剪空白 [由 Character.isWhiteSpace() 确定] 从目标字符串的正面、背面或正面和背面去除。
String.trim()
JavaDoc 声明:
/**
* Returns a string whose value is this string, with any leading and trailing
* whitespace removed.
* ...
*/
这与上面的引述几乎相同。
自 Java 11 以来, String.trim()
和 String.strip()
之间究竟有什么区别?
原文由 Mikhail Kholodkov 发布,翻译遵循 CC BY-SA 4.0 许可协议
简而言之:
strip()
是---trim()
—的“Unicode-aware”演变。含义trim()
仅删除字符 <= U+0020(空格);strip()
删除所有 Unicode 空白字符(但不是所有控制字符,例如 \0)企业社会责任:JDK-8200378
String::trim 在 Java 的早期就已经存在,当时 Unicode
这些新方法的一个共同特征是它们使用与旧方法(例如
String.trim()
)不同(更新)的“空白”定义。漏洞 JDK-8200373 。The method
isWhitespace(char)
was added toCharacter
with JDK 1.1, but the methodisWhitespace(int)
was not introduced to theCharacter
class until JDK 1.5.添加了后一种方法(接受类型为int
的参数的方法)以支持增补字符。Character
类的 Javadoc 注释定义了补充字符(通常使用基于 int 的“代码点”建模)与 BMP 字符(通常使用单个字符建模):OpenJDK 变更集。
trim()
和strip()
之间的基准比较 - 为什么 String.strip() 比 String.trim() 快 5 倍用于空字符串在 Java 11