gpt4 book ai didi

java - 如何在没有正则表达式的情况下从字符串中提取数字

转载 作者:行者123 更新时间:2023-11-30 06:15:19 25 4
gpt4 key购买 nike

我想从字符串中提取 Number ,示例消息如下

Hello Your Account NO 295093491783 is been deducted by 17820.if you did not receive the Ack call 9897123456.

现在我正在使用 Google 的 Guava Like this

String temp = CharMatcher.JAVA_DIGIT.retainFrom(message);

我得到的结果类似于295093491783178209897123456,我想要的格式是

String[] a = {"295093491783", "17820", "9897123456"}

如有任何帮助,我们将不胜感激。我想使用 Guava 库来做到这一点。

注意:-

  1. 我不想使用正则表达式,因为 CharMatcher 比正则表达式更快。<​​/p>

  2. 我当前的解决方案几乎以6000 tps(每秒事务数)运行。

最佳答案

这可能对你有用:

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()]);
}

但是您是否真正对正则表达式解决方案进行了基准测试?

关于java - 如何在没有正则表达式的情况下从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49339795/

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