java - 如何为其中的每个整数解析字符串(并避免非整数)?

标签 java string parsing integer

例如,假设我有以下字符串:"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/

相关文章:

jquery - jQuery如何找到Dom元素

parsing - 使用 Powershell 解析二进制文件

java - Android 解析 xml 文件时出错

java - 为什么我的文本解析器会进入无限循环,尽管循环已明确中断?

java - 如何将字符串类型的值的编码与java中的特定编码进行比较?

java - Android:创建一个透明盒子,里面有元素

c# - 如何使用 AutoMapper 提供枚举到字符串的默认映射?

c++ - 我如何(干净利落地!)将 std::stringstream 子类化以进行自定义?

java - Java中的特殊字符

java - 表单验证错误验证未处理