Увеличивайте каждую цифру от строки на 1

private static void getMethod(String input) {

 Matcher matcher = Pattern.compile("(\\d)").matcher(input);
 StringBuffer sb = new StringBuffer();

 while (matcher.find()) {
 matcher.appendReplacement(sb,
 String.valueOf(Integer.parseInt(matcher.group(1)) + 1));
 }
 matcher.appendTail(sb);
 System.out.println(sb.toString());

}

пожалуйста, объясните следующие строки.... им не получается....

Pattern.compile("(\\d)");

а также

while (matcher.find()) {
matcher.appendReplacement(sb, String.valueOf(Integer.parseInt(matcher.group(1)) + 1));
}
matcher.appendTail(sb);
1 ответ

Pattern.compile("(\\d)");

Это простое регулярное выражение с группой, которая будет соответствовать числу (группы будут числиться из 1, а groupe -(), отсчет начинается с левой стороны).

\d - короткая версия [0-9]

while (matcher.find()) {

Это простой цикл по всем числам в строке. Эта часть будет соответствовать номеру и помещать его в группу.

matcher.appendReplacement(sb, String.valueOf(Integer.parseInt(matcher.group(1)) + 1));

Это немного сложнее.

Он помещает все символы из строки в строку sb и заменяет часть, на которой он остановлен.

String.valueOf(Integer.parseInt(matcher.group(1)) + 1)

Это принимает строковую версию числа (сопоставлено с помощью find), анализирует ее на int, добавляет 1 и анализирует обратно в String

Сори для любых лексических ошибок

licensed under cc by-sa 3.0 with attribution.