Java 11中String trim()和strip()方法之间的区别
在其他更改中,JDK 11为java.lang.String类引入了6种新方法:
repeat(int)
-重复字符串多次通过所提供的int
参数lines()
-使用分隔符从源字符串懒惰地提供行isBlank()
-指示字符串是否为空或仅包含空格字符stripLeading()
-从开头删除空白stripTrailing()
-从末端去除空白- -删除字符串开头和结尾的空格
尤其strip()
看起来与十分相似trim()
。按照本文的规定, strip*()
方法旨在:
String.strip(),String.stripLeading()和String.stripTrailing()方法从目标String的正面,背面或正面和背面修剪空白[由Character.isWhiteSpace()确定)。
String.trim()
JavaDoc指出:
/** * Returns a string whose value is this string, with any leading and trailing
* whitespace removed.
* ...
*/
这几乎与上面的引用相同。
String.trim()
和String.strip()
Java 11以来的区别到底是什么?
回答:
简而言之:strip()
是的“支持Unicode的”演变trim()
。
企业社会责任:JDK-8200378
String :: trim从Java的早期开始就存在,当时Unicode尚未完全发展为我们今天广泛使用的标准。
String :: trim使用的空格定义是小于或等于空格代码点(\ u0020)的任何代码点,通常称为ASCII或ISO控制字符。
支持Unicode的修剪例程应使用Character :: isWhitespace(int)。
此外,开发人员无法专门删除缩进空格或专门删除尾随空格。
介绍可识别Unicode空白的修整方法,并提供仅前导或仅尾随的附加控制。
这些新方法的一个共同特点是,它们使用的旧方法(例如)使用不同的(较新的)“空白”定义String.trim()
。错误JDK-8200373。
当前的JavaDoc for String ::
trim尚不清楚代码中使用了哪个“空格”定义。随着不久的将来使用不同空间定义的其他修剪方法,必须进行澄清。String ::
trim使用空格的定义作为小于或等于空格字符代码点(\
u0020)的任何代码点。较新的修整方法将使用(white)空格的定义作为传递给参数时返回true的任何代码点。字符:: isWhitespace谓词。
该方法isWhitespace(char)
是在Character
JDK 1.1中添加的,但是直到JDK
1.5才将该方法isWhitespace(int)
引入到Character
类中。添加了后一种方法(接受类型参数的方法int
)以支持补充字符。Character
该类的Javadoc注释定义了补充字符(通常以基于int的“代码点”为模型)与BMP字符(通常以单个字符为模型):
从U + 0000到U + FFFF的字符集有时被称为基本多语言平面(BMP)。代码点大于U +
FFFF的字符称为补充字符。Java平台在char数组以及String和StringBuffer类中使用UTF-16表示形式。在此表示形式中,辅助字符表示为一对char值。因此,char值表示基本多语言平面(BMP)代码点,包括替代代码点或UTF-16编码的代码单元。一个int值表示所有Unicode代码点,包括补充代码点。…仅接受char值的方法不能支持补充字符。…接受int值的方法支持所有Unicode字符,包括补充字符。
OpenJDK 变更集。
trim()
和之间的基准比较strip()
-
以上是 Java 11中String trim()和strip()方法之间的区别 的全部内容, 来源链接: utcz.com/qa/429695.html