English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La classe java.util.regex.Matcher rappresenta un motore che esegue vari operazioni di corrispondenza. Questa classe non ha costruttore, può creare / ottenere un oggetto di questa classe utilizzando il metodo matchs() della classe java.util.regex.Pattern.
Il metodo appendReplacement() di questa classe (Matcher) accetta un oggetto StringBuffer e una stringa (stringa di sostituzione) come parametri, aggiunge i dati di input all'oggetto StringBuffer e sostituisce il contenuto corrispondente con la stringa di sostituzione.
Internamente, questo metodo legge ciascun carattere dalla stringa di input e lo aggiunge al buffer di stringa, ogni volta che si verifica una corrispondenza, sostituisce la stringa invece di aggiungere la parte corrispondente del match al buffer, quindi continua dal prossimo carattere della stringa corrispondente.
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>"; //Espressione regolare per corrispondere ai contenuti dei tag in grassetto String regex = "<b>(\S+)</b>"; System.out.println("Stringa di input: \n" + str); //Creazione di un oggetto pattern Pattern pattern = Pattern.compile(regex); //Corrispondenza del pattern compilato nella stringa Matcher matcher = pattern.matcher(str); //Creando un buffer di stringa vuoto StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, "BoldData"); } matcher.appendTail(sb); System.out.println("Contenuti della StringBuffer: "+ sb.toString() ); } }
Risultato di output
Stringa di input: <pQuesto <b>è</b> un <b>esempio</b> HTML <b>script</b>.</p> Contenuti della StringBuffer: Questo BoldData un BoldData HTML BoldData. <pQuesto BoldData un 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("Inserisci il testo di input: "); String input = sc.nextLine(); String regex = "[#$&+=@|<>-]"; //Creazione di un oggetto pattern Pattern pattern = Pattern.compile(regex); //Creazione di un oggetto Matcher Matcher matcher = pattern.matcher(input); int count = 0; StringBuffer buffer = new StringBuffer(); System.out.println("Rimozione del carattere speciale dalla stringa fornita"); while(matcher.find()) { count++; matcher.appendReplacement(buffer, ""); } matcher.appendTail(buffer); //Recuperando il modello utilizzato System.out.println("Ci sono stati " + count + " caratteri speciali nel testo fornito"); System.out.println("Testo dopo averli rimossi tutti \n"+buffer.toString()); } }
Risultato di output
Inserisci il testo di input: Hello# how$ are& yo|u welco<me to> Tut-oria@ls@po-in#t. Rimozione del carattere speciale dalla stringa fornita Ci sono stati 11 caratteri speciali nel testo fornito Testo dopo averli rimossi tutti Hello, come stai? Benvenuto su w3codebox.