BUG# | BUG TITLE | 新String 方法 |
描述 |
---|---|---|---|
JDK-8200425 | 字符串::线 | lines() |
“字符串实例方法,它使用专门的Spliterator来懒惰地提供源字符串中的行。” |
JDK-8200378 | String :: strip,String :: stripLeading,String :: stripTrailing | strip() |
“Unicode-aware” 修饰的演变() |
stripLeading() |
“从一开始就删除Unicode空格” | ||
stripTrailing() |
“从...结束删除Unicode空格” | ||
JDK-8200437 | 字符串的isBlank :: | isBlank() |
“实例方法,如果字符串为空或仅包含空格,则返回true” |
String.trim()
方法(邮件列表审查请求)解决了这个问题:
方法isWhitespace(char)被添加到带有JDK 1.1的Character中,但是方法isWhitespace(int)在JDK 1.5之前没有被引入到Character类中。后一种方法(接受类型参数的方法)被添加以支持补充字符。Character类的Javadoc注释定义了补充字符(通常使用基于int的“代码点” 建模)与BMP字符(通常使用单个字符建模):
String :: trim的当前JavaDoc不清楚代码中使用了“space”的哪个定义。随着近期使用不同空间定义的修剪方法,澄清是必不可少的。String :: trim使用space的定义作为小于或等于空格字符代码点的任何代码点(\ u0040。)较新的修剪方法将使用(白色)空间的定义作为传递给传递给它时返回true的任何代码点。 Character :: isWhitespace谓词。
int
我在上面的引用中加入了大胆的强调,以强调“ 代码点 ” 的重要性,它为Java上下文定义为 “可以在编码字符集中使用的值”。
从U + 0000到U + FFFF的字符集有时被称为 基本多语言平面(BMP)。代码点大于U + FFFF的字符称为 增补字符。Java平台在char
数组String
和StringBuffer
类中使用UTF-16表示 。在该表示中,补充字符被表示为一对char
值...char
因此,值表示基本多语言平面(BMP)代码点,包括代理代码点或UTF-16编码的代码单元。一个int
值表示所有Unicode代码点,包括增补代码点。... 仅接受char
值的方法不能支持补充字符。... 接受int
值的方法支持所有Unicode字符,包括补充字符。
String
在JDK 11中提出的五种新方法中有四种在很大程度上依赖于体现的概念Character.isWhitespace(int)
来确定如何“修剪”给定字符串或确定给定字符串是否为“空白”。String
目前针对JDK 11提出的新方法提供了一种更一致的方法来处理字符串中的空白区域,可以更好地处理国际化,提供仅在字符串的开头或字符串的末尾修剪空白的方法,并提供方法特别适用于即将出现的原始字符串文字。https://www.leftso.com/article/463.html