我有这样的模式:
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'
}