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

Metodo appendReplacement() di Matcher con esempio in Java

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.

Esempio 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>";
      //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>

Esempio 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("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.