例如,假设我有以下字符串:"1 23 35 5d 8 0 f"
当我运行该函数时,如何提取 ArrayList<Integer>
从里面出来所以它将包含{1, 23, 35, 8, 0}
, 有效地跳过无效整数?
如果有的话,跳过无效整数并不是很重要,因为我可以很容易地解决这个问题,但我主要是想看看是否有一种有效的方法来解析字符串中的每个整数。
最佳答案
没什么好看的。只是循环,并忽略异常:
List<Integer> list = new ArrayList<>();
for (String num : "1 23 35 5d 8 0 f".split(" ")) {
try {
list.add(Integer.parseInt(num));
} catch (NumberFormatException e) {}
}
*编辑*:如果无效整数很常见,您将通过手动检查每个部分的数字来获得更好的性能:
List<Integer> list = new ArrayList<>();
outer:
for (String num : "1 23 35 5d 8 0 f".split(" ")) {
for (int i = 0; i < num.length(); i++) {
char c = num.charAt(i);
if (!((c >= '0' && c <= '9') || c == '-' || c == '+')) continue outer;
}
try {
list.add(Integer.parseInt(num));
} catch (NumberFormatException e) {}
}
这仍然有 try-catch 以拒绝超出范围的整数或任何在不适当的地方有减号/加号的整数,但如果您知道这些不会出现在您的数据中,或者如果您对于这些情况,我更愿意抛出异常。
关于java - 如何为其中的每个整数解析字符串(并避免非整数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003550/