Я бы использовал регулярное выражение , чтобы заменить все нецифровые символы пробелом, trim()
, чтобы удалить все начальные и конечные и пробелы, а затем разделить на (необязательно последовательные) пробелы;например,
String output = "red 5green 5blue 10white 15";
int sum = 0;
for (String token : output.replaceAll("\\D+", " ").trim().split("\\s+")) {
sum += Integer.parseInt(token);
}
System.out.println(sum);
Выходы (согласно запросу)
35
Другой вариант будет Pattern
, чтобы найти все последовательности из одной или нескольких цифр и сгруппировать их, а затем использовать циклразобрать и добавить в sum
.Мол,
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(output);
while (m.find()) {
sum += Integer.parseInt(m.group(1));
}
System.out.println(sum);
Что также даст вам 35
.