首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在没有正则表达式的情况下从字符串中提取数字

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

Stack Overflow用户
提问于 2018-03-18 01:27:45
回答 1查看 254关注 0票数 1

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

您好,您的账号295093491783已被17820扣费。如果您没有收到确认电话9897123456。

现在我正在使用Google的Guava,如下所示

代码语言:javascript
复制
String temp = CharMatcher.JAVA_DIGIT.retainFrom(message);

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

代码语言:javascript
复制
String[] a = {"295093491783", "17820", "9897123456"}

任何帮助都将不胜感激。我想使用芭乐库来实现这一点。

备注:-

  1. 我不想使用正则表达式,因为CharMatcher比正则表达式更快。
  2. 我当前的解决方案几乎以6000 tps (每秒事务处理量)运行。
EN

回答 1

Stack Overflow用户

发布于 2018-03-18 01:53:08

这可能对你有用:

代码语言:javascript
复制
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解决方案进行了基准测试?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49339795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档