首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找字符串中的所有数字

查找字符串中的所有数字
EN

Stack Overflow用户
提问于 2012-11-18 21:20:57
回答 3查看 104.5K关注 0票数 25

例如,我有输入字符串:"qwerty1qwerty2";

作为输出,我希望是1,2。

我目前的实现如下:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;

public class Test1 {

    public static void main(String[] args) {
        String inputString = args[0];
        String digitStr = "";
        List<Integer> digits = new ArrayList<Integer>();

        for (int i = 0; i < inputString.length(); i++) {
            if (Character.isDigit(inputString.charAt(i))) {
                digitStr += inputString.charAt(i);
            } else {
                if (!digitStr.isEmpty()) {
                    digits.add(Integer.parseInt(digitStr));
                    digitStr = "";
                }
            }
        }
        if (!digitStr.isEmpty()) {
            digits.add(Integer.parseInt(digitStr));
            digitStr = "";
        }

        for (Integer i : digits) {
            System.out.println(i);
        }
    }
}

但在仔细检查之后,我放弃了几点:

  1. 某些代码行重复两次。
  2. I use List。我认为这不是一个好主意,最好使用数组。

那么,你怎么看?

你能给我一些建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-18 21:34:57

使用replaceAll:

代码语言:javascript
复制
String str = "qwerty1qwerty2";      
str = str.replaceAll("[^0-9]+", " ");
System.out.println(Arrays.asList(str.trim().split(" ")));

输出:

代码语言:javascript
复制
[1, 2]

编辑

如果要包含- a.e减号,请添加-?

代码语言:javascript
复制
String str = "qwerty-1qwerty-2 455 f0gfg 4";      
str = str.replaceAll("[^-?0-9]+", " "); 
System.out.println(Arrays.asList(str.trim().split(" ")));

输出:

代码语言:javascript
复制
[-1, -2, 455, 0, 4]

描述

代码语言:javascript
复制
[^-?0-9]+

  • +在1次和无限次之间,尽可能多地返回一个字符作为needed
  • -?“-?”
  • 0-9“0”和“9”

之间的一个字符

票数 65
EN

Stack Overflow用户

发布于 2012-11-18 21:27:40

代码语言:javascript
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

Pattern pattern = Pattern.compile("[0-9]+"); 
Matcher matcher = pattern.matcher("test1string1337thingie");

// Find all matches
while (matcher.find()) { 
  // Get the matching string  
  String match = matcher.group();
}

是一种正则表达式解决方案。

票数 5
EN

Stack Overflow用户

发布于 2012-11-18 21:55:02

试试这段代码

代码语言:javascript
复制
String s = "qwerty1qwerty2";
for(int i=0;i<s.length();i++)
{
   if(Character.isDigit(s.charAt(i)))
   System.out.print(s.charAt(i)+"  ");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13440506

复制
相关文章

相似问题

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