使用JDK 11在Java字符串上的新方法

Java的String类似乎将在JDK 11中获得一些新方法,该方法将于2018年9月发布。

错误号 错误标题 新的String方法 描述
JDK-8200425 字符串::行 lines() “使用专用的分隔符从源字符串中懒惰地提供行的字符串实例方法。”
JDK-8200378 String :: strip,String :: stripLeading,String :: stripTrailing strip() trim()的 “ Unicode感知”演变
stripLeading() “从一开始就删除Unicode空白”
stripTrailing() “从……端删除Unicode空白”
JDK-8200437 字符串:: isBlank isBlank() “如果字符串为空或仅包含空格,则返回true的实例方法”

可以在core-libs-dev邮件列表上的请求“ 兼容性和规范审查 ”(CSR)的消息中找到与这些方法有关的进展证据:

这五个新方法中的四个的一个共同特征是,它们使用与旧方法(例如String.trim())不同的(较新的)“空白”定义。 错误JDK-8200373 [“ String :: trim JavaDoc应该澄清空间的含义”]甚至针对String.trim()方法( 邮件列表查看请求 )解决了这个问题:


当前的JavaDoc for String :: trim尚不清楚代码中使用了哪个“空格”定义。 在不久的将来,随着使用不同空间定义的其他修剪方法的出现,必须进行澄清。 String :: trim使用空格的定义作为小于或等于空格字符代码点(\ u0040)的任何代码点。较新的修整方法会将(空格)的定义用作任何传递给the时返回true的代码点。字符:: isWhitespace谓词。

JDK 1.1中将isWhitespace(char)方法添加到Character中 ,但是直到JDK 1.5才将isWhitespace(int)方法引入Character类中。 添加了后一种方法(接受一个int类型的参数的方法)以支持补充字符针对Character类Javadoc注释定义了补充字符 (通常以基于int的“代码点”为模型)与BMP字符 (通常以单个字符为模型):


从U + 0000到U + FFFF的字符集有时被称为基本多语言平面(BMP) 代码点大于U + FFFF的字符称为补充字符 Java平台在char数组以及StringStringBuffer类中使用UTF-16表示形式。 在此表示形式中,辅助字符表示为一对char值...因此, char值表示基本多语言平面(BMP)代码点,包括替代代码点或UTF-16编码的代码单元。 一个int值表示所有Unicode代码点,包括补充代码点。 仅接受char值的方法不能支持补充字符。 接受int值的方法支持所有Unicode字符,包括补充字符。

我在上面的引用中添加了粗体 ,以强调“ 代码点 ”的重要性,“ 代码点在Java上下文中定义为 “可以在编码字符集中使用的值”。 在JDK 11中为String提出的五个新方法中,有四个在很大程度上依赖于Character.isWhitespace(int)包含的概念来确定如何“修剪”给定的字符串或确定给定的字符串是否为“空白”。

说到Unicode,还建议将 JEP 327 [“ Unicode 10”] 添加到JDK 11中。 正如JEP所说,其目的是“升级现有平台API以支持Unicode标准 10.0版 。” 对于任何希望使用此新版本支持的“ 56个新 表情符号字符”的人来说,这将是特别令人兴奋的消息。

结论

当前针对JDK 11提出的String新方法提供了一种更一致的方法来处理字符串中的空格,可以更好地处理国际化;提供了仅在字符串开头或字符串结尾处修剪空格的方法,并提供了专门用于传入原始字符串文字的方法

翻译自: https://www.javacodegeeks.com/2018/05/new-methods-on-java-string-with-jdk-11.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值