我想从字符串中提取Number
,示例消息如下
您好,您的账号295093491783已被17820扣费。如果您没有收到确认电话9897123456。
现在我正在使用Google的Guava,如下所示
String temp = CharMatcher.JAVA_DIGIT.retainFrom(message);
我得到了类似于295093491783178209897123456的结果,我想要的格式是
String[] a = {"295093491783", "17820", "9897123456"}
任何帮助都将不胜感激。我想使用芭乐库来实现这一点。
备注:-
CharMatcher
比正则表达式更快。发布于 2018-03-18 01:53:08
这可能对你有用:
static String[] getNumbers(String from) {
List<String> numbers = new ArrayList<>();
StringBuilder number = new StringBuilder();
for (int i = 0; i < from.length(); i++) {
char c = from.charAt(i);
if (Character.isDigit(c)) {
number.append(c);
} else if (number.length() > 0){
numbers.add(number.toString());
number.setLength(0);
}
}
if (number.length() > 0) {
numbers.add(number.toString());
}
return numbers.toArray(new String[numbers.size()]);
}
但是,您是否真的对regex解决方案进行了基准测试?
https://stackoverflow.com/questions/49339795
复制相似问题