替代Guava的Charmatcher方法,比如javaDigit()?

问题描述 投票:-1回答:1

我已经使用Guava的CharMatcher很长一段时间了,它对一切都很有用。现在我看到它中的大多数方法现在都在Guava 27.0.1中被弃用了

文档说“已弃用。许多数字是补充字符;请参阅类文档。”但是,在阅读课程文档后,我仍然感到困惑。大多数情况下,当一个方法被弃用时,它们会告诉你另一种方法,但是,这一次,我觉得文档基本上是说“这个类不能正常工作,所以不要使用它” 。

例如,只保留字符串数字的正确方法是什么?在我可以做之前:

String inputString = "abc123def456";
String outputString = CharMatcher.javaDigit().retainFrom(inputString);
java guava deprecated
1个回答
4
投票

方法的Javadoc说明:

@deprecated Many digits are supplementary characters; see the class documentation.

这意味着除了通常使用的0到9之间的数字外,还可以匹配其他字符。

在番石榴中有两种内置方法:digit()javaDigit()。前者匹配“BMP数字根据Unicode”规格,后者匹配“根据Character#isDigit()的BMP数字”。他们每个都匹配奇怪的字符,如梵文或全宽数字(我甚至不会链接它们;)),这很少是用户想要的,可能会误导。

这就是为什么首选方式(由Guava作者)是明确的(稍后在javadoc中说明):

如果您只关心匹配ASCII数字,则可以使用CharMatcher#inRange('0', '9')

在您的情况下,只需使用:

String outputString = CharMatcher.inRange('0', '9').retainFrom(inputString);
© www.soinside.com 2019 - 2024. All rights reserved.