例如,我输入了字符串:“ 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