在字符串中查找所有数字

例如,我输入了字符串:“ qwerty1qwerty2 ”;

作为输出,我希望有 [1,2]

我当前的实现如下:

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. 我使用列表。我认为这不是一个好主意,最好使用数组。

所以你怎么看?

您能提供任何建议吗?

回答:

使用RepalceAll

String str = "qwerty1qwerty2";      

str = str.replaceAll("[^0-9]+", " ");

System.out.println(Arrays.asList(str.trim().split(" ")));

输出:

[1, 2]

如果要包括-ae减去,请添加-?

String str = "qwerty-1qwerty-2 455 f0gfg 4";      

str = str.replaceAll("[^-?0-9]+", " ");

System.out.println(Arrays.asList(str.trim().split(" ")));

输出:

[-1, -2, 455, 0, 4]


描述

[^-?0-9]+

  • + 在一次和无限次之间,尽可能多次,并根据需要进行回馈
  • -? 字符“-?”之一
  • 0-9 介于“ 0”和“ 9”之间的字符

以上是 在字符串中查找所有数字 的全部内容, 来源链接: utcz.com/qa/416052.html

回到顶部