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, String)

 

Data di pubblicazione: ottobre 2016

In una stringa di input specificata, sostituisce tutte le stringhe corrispondenti a un criterio di espressione regolare con una stringa di sostituzione specificata.

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

public string Replace(
	string input,
	string replacement
)

Parametri

input
Type: System.String

Stringa nella quale cercare una corrispondenza.

replacement
Type: System.String

Stringa di sostituzione.

Valore restituito

Type: System.String

Stringa nuova identica alla stringa di input, a eccezione del fatto che ogni stringa corrispondente viene sostituita dalla 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 replacement è null.

RegexMatchTimeoutException

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

La ricerca di corrispondenze inizia all'inizio del input stringa. L'espressione regolare corrisponde al criterio definito dal costruttore per l'oggetto Regex oggetto.

Il replacement parametro specifica la stringa da sostituire ogni corrispondenza nella input. replacement può contenere qualsiasi combinazione di testo letterale e sostituzioni. Ad esempio, il criterio di sostituzione a*${test}b inserisce la stringa "un *" seguita dalla sottostringa corrispondente la test gruppo di acquisizione, se presente, seguito dalla stringa "b". Il * carattere non è riconosciuto come metacarattere all'interno di un criterio di sostituzione.

System_CAPS_noteNota

Le sostituzioni sono elementi del linguaggio di espressione regolare solo riconosciuti in un criterio di sostituzione. Tutti gli elementi di linguaggio altre espressioni regolari, tra cui caratteri di escape, sono consentiti nelle solo i modelli di espressione regolare e non sono riconosciuti nei modelli di sostituzione.

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 viene definita un'espressione regolare, \s+, che corrisponde a uno o più caratteri spazio vuoto. Stringa di sostituzione, "", li sostituisce con un singolo carattere spazio.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "This is   text with   far  too   much   " + 
                     "whitespace.";
      string pattern = "\\s+";
      string replacement = " ";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}
// The example displays the following output:
//       Original String: This is   text with   far  too   much   whitespace.
//       Replacement String: This is text with far too much whitespace.

Nell'esempio seguente viene definita un'espressione regolare, (\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?, e un criterio di sostituzione, $2, che rimuove iniziale o finale di un simbolo di valuta da un valore numerico.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern =  @"(\p{Sc}\s?)?(\d+\.?((?<=\.)\d+)?)(?(1)|\s?\p{Sc})?";
      string input = "$17.43  €2 16.33  £0.98  0.43   £43   12€  17";
      string replacement = "$2";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String:    '{0}'", input);
      Console.WriteLine("Replacement String: '{0}'", result);                             
   }
}
// The example displays the following output:
//       Original String:    '$17.43  €2 16.33  £0.98  0.43   £43   12€  17'
//       Replacement String: '17.43  2 16.33  0.98  0.43   43   12  17'

L'espressione regolare viene interpretata come illustrato nella tabella seguente.

Criterio

Descrizione

\p{Sc}

Corrisponde a un simbolo di valuta. {Sc} indica qualsiasi carattere appartenente la categoria Unicode Symbol, Currency.

\s?

Trova la corrispondenza di uno o nessuno spazio vuoto.

(\p{Sc}\s?)?

Corrisponde a zero o una occorrenza della combinazione di un simbolo di valuta seguito da zero o un carattere di spazio vuoto. Equivale al primo gruppo di acquisizione.

\d+

Trova la corrispondenza con una o più cifre decimali.

\.?

Corrisponde a zero o una occorrenza di un punto (utilizzato come carattere separatore decimale).

((?<=\.)\d+)?

Se un periodo è il carattere precedente, corrisponde a uno o più cifre decimali. Questo modello può corrispondere zero o una volta.

(\d+\.?((?<=\.)\d+)?)

Corrisponde al modello di uno o più cifre decimali seguite da un punto facoltativo e da ulteriori cifre decimali. Equivale al secondo gruppo di acquisizione. La chiamata al Replace(String, String) metodo sostituisce l'intera corrispondenza con il valore di questo gruppo acquisito.

(?(1)|\s?\p{Sc})?

Se il primo gruppo acquisito esiste, corrisponde una stringa vuota. Corrisponde in caso contrario, zero o un carattere di spazio vuoto seguito da un simbolo di valuta.

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: