Метод appendReplacement
Метод appendReplacement класса Matcher используется
для пошаговой замены найденных совпадений в строке. Он добавляет
в специальный буфер (обычно это StringBuffer или
StringBuilder) текст, который должен заменить текущее
найденное совпадение. Первым параметром метод принимает буфер,
в который будет записан результат, а вторым - строку замены.
Важно, что перед вызовом этого метода нужно сначала найти
совпадение с помощью метода find.
Синтаксис
matcher.appendReplacement(sb, replacement)
Пример
Давайте найдем все цифры в строке и заменим их на символ "X",
используя цикл и метод appendReplacement:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
String str = "a1b2c3";
Pattern pattern = Pattern.compile("\\d");
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find())
{
matcher.appendReplacement(sb, "X");
}
matcher.appendTail(sb);
System.out.println(sb.toString());
}
}
Результат выполнения кода:
"aXbXcX"
Пример
Давайте заменим все буквы на их верхний регистр,
используя группы и метод appendReplacement:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static void main(String[] args)
{
String str = "abcde";
Pattern pattern = Pattern.compile("([a-z])");
Matcher matcher = pattern.matcher(str);
StringBuilder sb = new StringBuilder();
while (matcher.find())
{
matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
}
matcher.appendTail(sb);
System.out.println(sb.toString());
}
}
Результат выполнения кода:
"ABCDE"
Смотрите также
-
класс
Matcher,
который выполняет поиск и замену в строках -
метод
appendTail,
который добавляет остаток строки в буфер -
метод
find,
который ищет следующее совпадение -
метод
replaceAll,
который заменяет все совпадения сразу