2

我有这个模式:

    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;
    }

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

4

1 回答 1

0

也许您可以改用字符串的“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'
}
于 2020-08-10T19:39:17.363 回答