带有组的Java模式



我有这样的模式:

    Pattern p = Pattern.compile("([0-9]){11}");

我的问题是如何从组中得到所有的数字并求和。我正在尝试使用此代码,但不起作用:

    Matcher matcher = p.matcher(field);
    int result = 0;
    if (matcher.matches()) {
        for (int i = 0; i <= matcher.groupCount(); i++) {
            String number = matcher.group(i + 1);
            result += Integer.parseInt(number);
        }
        return result;
    } else {
        return -1;
    }

它找到的唯一一个组是最后一个组。

也许您可以使用String的"substring()"相反

参见下面的示例:

public static void main(String[] args) {
    String stringOfNumbers = "AAA23211111111BBB";
    int sumOfDigits = 0;
    Matcher matcher = Pattern.compile("([0-9]{11})").matcher(stringOfNumbers);
    if (matcher.find()) {
        String extractedNumbers = matcher.group(1);
        for (int i = 0; i < extractedNumbers.length(); i++) {
            int oneDigit = Integer.parseInt(extractedNumbers.substring(i, i + 1));
            sumOfDigits += oneDigit;
        }
    }
    System.out.println("Sum of digits: " + sumOfDigits); // Output: 'Sum of digits: 15'
}

最新更新