sat*_*nam 4 java deprecated guava
我已经使用 Guava 的 CharMatcher 很长时间了,它对所有事情都很好。现在我看到其中的大部分方法现在在 Guava 27.0.1 中已弃用
文档说“已弃用。许多数字是补充字符;请参阅类文档。” 但是,看了class文档后,还是一头雾水。大多数情况下,当一个方法被弃用时,他们会告诉你另一种做事的方法,但是,这一次,我觉得文档基本上是在说“这个类不能正常工作,所以不要使用它” .
例如,仅保留字符串的数字的正确方法是什么?在我可以简单地做之前:
String inputString = "abc123def456";
String outputString = CharMatcher.javaDigit().retainFrom(inputString);
Run Code Online (Sandbox Code Playgroud)
该方法的 Javadoc 指出:
Run Code Online (Sandbox Code Playgroud)@deprecated Many digits are supplementary characters; see the class documentation.
这意味着除了从 0 到 9 的数字(您通常使用的数字)之外,还可以匹配其他字符。
在 Guava 中,有两种内置方法:digit()和javaDigit(). 前者匹配“ BMP数字根据Unicode ”规范,后者匹配“ BMP 数字根据Character#isDigit()”。他们每个人都匹配奇怪的字符,如天城文或全角数字(我什至不会链接它们;)),这很少是用户想要的,并且可能会产生误导。
这就是为什么首选方式(由番石榴作者)是明确的(稍后在 javadoc 中说明):
如果您只想匹配 ASCII 数字,则可以使用
CharMatcher#inRange('0', '9').
在您的情况下,只需使用:
String outputString = CharMatcher.inRange('0', '9').retainFrom(inputString);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |