在字符串中查找所有数字
例如,我输入了字符串:“ 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);
}
}
}
但是经过仔细检查,我发现了几点:
某些代码行重复两次。
我使用列表。我认为这不是一个好主意,最好使用数组。
所以你怎么看?
您能提供任何建议吗?
回答:
使用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