Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Regex.Replace (String, MatchEvaluator, Int32)

 

Data di pubblicazione: ottobre 2016

In una stringa di input specificata, sostituisce un numero massimo di stringhe specificato corrispondenti a un criterio di espressione regolare con una stringa restituita da un delegato MatchEvaluator.

Spazio dei nomi:   System.Text.RegularExpressions
Assembly:  System (in System.dll)

public string Replace(
	string input,
	MatchEvaluator evaluator,
	int count
)

Parametri

input
Type: System.String

Stringa nella quale cercare una corrispondenza.

evaluator
Type: System.Text.RegularExpressions.MatchEvaluator

Metodo personalizzato che esamina ogni corrispondenza e restituisce la stringa corrispondente originale o una stringa di sostituzione.

count
Type: System.Int32

Numero massimo di volte in cui la sostituzione avrà luogo.

Valore restituito

Type: System.String

Stringa nuova identica alla stringa di input, ad eccezione del fatto che ogni stringa corrispondente viene sostituita da una stringa di sostituzione. Se il criterio di espressione regolare non trova corrispondenza nell'istanza corrente, il metodo restituisce l'istanza corrente invariata.

Exception Condition
ArgumentNullException

input o evaluator è null.

RegexMatchTimeoutException

Si è verificato un timeout. Per altre informazioni sui timeout, vedere la sezione Osservazioni.

Il Regex.Replace(String, MatchEvaluator, Int32) metodo è utile per la sostituzione di una corrispondenza di espressione regolare se una delle seguenti condizioni è vera:

  • La stringa di sostituzione non può essere specificata immediatamente da un criterio di sostituzione di espressione regolare.

  • Stringa di sostituzione risultante da alcune elaborazioni eseguite sulla stringa corrispondente.

  • Stringa di sostituzione risultante dall'elaborazione condizionale.

Il metodo è equivalente alla chiamata di Regex.Matches(String) e passando il primo countMatch oggetti nell'oggetto restituito MatchCollection insieme al evaluator delegare.

L'espressione regolare corrisponde al criterio definito dal costruttore per l'oggetto Regex oggetto.

Il evaluator parametro è il delegato per un metodo personalizzato definito dall'utente e che esamina ogni corrispondenza. Il metodo personalizzato deve avere la firma seguente per trovare la corrispondenza di MatchEvaluator delegare.

public string MatchEvaluatorMethod(Match match)

Il metodo personalizzato restituisce una stringa che sostituisce l'input corrispondente.

Il RegexMatchTimeoutException eccezione viene generata se il tempo di esecuzione dell'operazione di sostituzione supera l'intervallo di timeout specificato per il Regex.Regex(String, RegexOptions, TimeSpan) costruttore. Se non si imposta un intervallo di timeout quando si chiama il costruttore, l'eccezione viene generata se l'operazione supera un valore di timeout stabilito per il dominio applicazione in cui il Regex viene creato l'oggetto. Se il timeout non viene definito nel Regex chiamata al costruttore o nelle proprietà del dominio applicazione, o se il valore di timeout è Regex.InfiniteMatchTimeout, viene generata alcuna eccezione

Poiché il metodo restituisce input verrà modificato se non esiste alcuna corrispondenza, è possibile utilizzare il Object.ReferenceEquals metodo per determinare se il metodo ha effettuato le sostituzioni di stringa di input.

Nell'esempio seguente utilizza un'espressione regolare per deliberatamente ortografia di metà delle parole in un elenco. Usa l'espressione regolare \w*(ie|ei)\w* per corrispondere a parole che includono i caratteri "ie" o "ei". Passa la prima metà delle parole corrispondenti per il ReverseLetter (metodo), che, a sua volta, utilizza il Replace(String, String, String, RegexOptions) metodo per invertire "i" e "e" nella stringa di ricerca. Le parole rimanenti rimangono invariate.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "deceive relieve achieve belief fierce receive";
      string pattern = @"\w*(ie|ei)\w*";
      Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
      Console.WriteLine("Original string: " + input);

      string result = rgx.Replace(input, new MatchEvaluator(Example.ReverseLetter), 
                                  input.Split(' ').Length / 2);
      Console.WriteLine("Returned string: " + result);
   }

   static string ReverseLetter(Match match)
   {
      return Regex.Replace(match.Value, "([ie])([ie])", "$2$1", 
                           RegexOptions.IgnoreCase);            
   }
}
// The example displays the following output:
//    Original string: deceive relieve achieve belief fierce receive
//    Returned string: decieve releive acheive belief fierce receive

The regular expression \w*(ie|ei)\w* is defined as shown in the following table.

Pattern

Description

\w*

Match zero or more word characters.

(ie|ei)

Match either "ie" or "ei".

\w*

Match zero or more word characters.

The regular expression pattern ([ie])([ie]) in the ReverseLetter method matches the first "i" or "e" in the diphthong "ie" or "ei" and assigns the letter to the first capturing group. It matches the second "i" or "e" and assigns the letter to the second capturing group. The two characters are then reversed by calling the M:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String) method with the replacement pattern $2$1.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: