gpt4 book ai didi

java - Guava 的 Charmatcher 方法的替代方法,例如 javaDigit()?

转载 作者:行者123 更新时间:2023-12-03 20:28:48 25 4
gpt4 key购买 nike

我已经使用 Guava 的 CharMatcher 很长时间了,它对所有事情都很好。现在我看到其中的大部分方法现在在 Guava 27.0.1 中已弃用

文档说“已弃用。许多数字是补充字符;请参阅类文档。”但是,看了class文档后,还是一头雾水。大多数情况下,当一个方法被弃用时,他们会告诉你另一种做事的方法,但是,这一次,我觉得文档基本上是在说“这个类不能正常工作,所以不要使用它” .

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

String inputString = "abc123def456";
String outputString = CharMatcher.javaDigit().retainFrom(inputString);

最佳答案

该方法的 Javadoc 指出:

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


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

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

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

If you only care to match ASCII digits, you can use CharMatcher#inRange('0', '9').



在您的情况下,只需使用:
String outputString = CharMatcher.inRange('0', '9').retainFrom(inputString);

关于java - Guava 的 Charmatcher 方法的替代方法,例如 javaDigit()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54853389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com