English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Класс java.util.regex.Matcher представляет собой двигатель для выполнения различных операций соответствия. Этот класс не имеет конструктора, объект этого класса можно создать/получить с помощью метода matches() класса java.util.regex.Pattern.
Метод appendReplacement() класса (Matcher) принимает объект StringBuffer и строку (строка замены) в качестве параметров и добавляет входные данные в объект StringBuffer, заменяя соответствующее содержимое строкой замены.
Внутри этого метода читает каждый символ из входной строки и добавляет его в буфер строк, когда происходит соответствие, он заменяет строку, а не добавляет часть соответствия в буфер, затем продолжает с следующего символа соответствия.
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>
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.