#java
#java
Вопрос:
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());
}
пожалуйста, объясните следующее lines….im не получается….
Pattern.compile("(\d)");
и
while (matcher.find()) {
matcher.appendReplacement(sb, String.valueOf(Integer.parseInt(matcher.group(1)) 1));
}
matcher.appendTail(sb);
Комментарии:
1. Вы читали javadoc этих методов?
2. Хм, я лично вроде как забыл, что (\ d) означает в регулярном выражении … учитывает ли это, как учитываются круглые скобки?
Ответ №1:
Pattern.compile("(\d)");
Это простое регулярное выражение с группой, которая будет соответствовать номеру (группы нумеруются с 1, а группа указывается с помощью (), подсчет начинается с левой стороны).
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)
Для этого берется строковая версия number (соответствующая find), преобразуется в int, добавляется 1 и выполняется обратный анализ в String
Извините за любые лексические ошибки