English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Метод appendReplacement() с примерами в Java Matcher

Класс java.util.regex.Matcher представляет собой двигатель для выполнения различных операций соответствия. Этот класс не имеет конструктора, объект этого класса можно создать/получить с помощью метода matches() класса java.util.regex.Pattern.

Метод appendReplacement() класса (Matcher) принимает объект StringBuffer и строку (строка замены) в качестве параметров и добавляет входные данные в объект StringBuffer, заменяя соответствующее содержимое строкой замены.

Внутри этого метода читает каждый символ из входной строки и добавляет его в буфер строк, когда происходит соответствие, он заменяет строку, а не добавляет часть соответствия в буфер, затем продолжает с следующего символа соответствия.

Пример 1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class appendReplacementExample {
   public static void main(String[] args) {
      String str = "<p>This <b>is</b> an <b>example</b>HTML <b>script</b>.</p>";
      //Регулярное выражение для соответствия содержимого жирных тегов
      String regex = "<b>(\S+)</b>";
      System.out.println("Входная строка: \n" + str);
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Соответствие скомпилированного шаблона в строке
      Matcher matcher = pattern.matcher(str);
      //Создание пустого буфера строк
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, "BoldData");
      }
      matcher.appendTail(sb);
      System.out.println("Contents of the StringBuffer:
"+ sb.toString() );
   }
}

Результат вывода

Input string:
<p>This <b>is</b> an <b>example</b> HTML <b>script</b>.</p>
Contents of the StringBuffer:
This BoldData an BoldData HTML BoldData.
<p>This BoldData an BoldData HTML BoldData.</p>

Example 2

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class appendReplacementExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text:");
      String input = sc.nextLine();
      String regex = "[#$&+=@|<>-]";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      int count = 0;
      StringBuffer buffer = new StringBuffer();
      System.out.println("Removing the special character from the given string");
      while(matcher.find()) {
         count++;
         matcher.appendReplacement(buffer, "");
      }
      matcher.appendTail(buffer);
      //Извлечение шаблона, используемого
      System.out.println("В данном тексте встречается специальных символов "+count+" раз");
      System.out.println("Текст после удаления всех из них 
"+buffer.toString());
   }
}

Результат вывода

Введите текст ввода:
Привет# как$ дела& вы| welco<me> > Tut-oria@ls@po-in#t.
Удаление специальных символов из строки
В данном тексте встречается специальных символов 11 раз
Текст после удаления всех из них
Привет, как дела? Добро пожаловать в w3codebox.
Основной учебник
Рекомендуется для просмотра