Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Regex.Replace (String, String)

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
Tipo: System.String
Stringa nella quale ricercare una corrispondenza.
replacement
Tipo: System.String
Stringa di sostituzione.

Valore restituito

Tipo: 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 modello di espressione regolare non corrisponde nell'istanza corrente, il metodo restituisce l'istanza corrente invariata.

EccezioneCondizione
ArgumentNullException

input o replacement è null.

RegexMatchTimeoutException

Si è verificato un timeout. Per ulteriori informazioni sui timeout, vedere la sezione Note.

La ricerca delle corrispondenze inizia a partire dalla stringa di input. L'espressione regolare corrisponde al criterio definito dal costruttore per l'oggetto Regex corrente.

Il parametro replacement specifica la stringa che deve andare a sostituire le prime corrispondenze input. replacement può consistere in una combinazione di testo letterale e sostituzioni. Il criterio di sostituzione a*${test}b, ad esempio, inserisce la stringa "a*" seguita dalla sottostringa corrispondente al gruppo di acquisizione test, se presente, seguita a sua volta dalla stringa "b". Il carattere * non è riconosciuto come metacarattere all'interno di un criterio di sostituzione.

NotaNota

Le sostituzioni sono i soli elementi del linguaggio di espressioni regolari riconosciuti in un criterio di sostituzione. Tutti gli altri elementi del linguaggio di espressioni regolari, compresi i caratteri di escape, sono consentiti solo in modelli di espressione regolare e non sono riconosciuti nei criteri di sostituzione.

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

Poiché il metodo restituisce input invariato se non viene rilevata alcuna corrispondenza, è possibile utilizzare il metodo Object.ReferenceEquals per determinare se il metodo ha apportato le sostituzioni alla stringa di input.

Nell'esempio riportato di seguito viene definita un'espressione regolare \s+ che corrisponde a uno o più caratteri di spazio vuoto. La stringa di sostituzione ", " li sostituisce con un solo 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 modello di sostituzione, $2, che rimuove generare o un simbolo di valuta finale 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.

Modello

Descrizione

\p{Sc}

Trovare la corrispondenza di un simbolo di valuta.

\s?

Trova la corrispondenza di uno o nessuno spazio vuoto.

(\p{Sc}\s?)?

Trovare la corrispondenza di zero o più occorrenze della combinazione tra un simbolo di valuta seguito da zero o uno spazio vuoto. Equivale al primo gruppo di acquisizione.

\d+

Corrisponde a una o più cifre decimali.

\.?

Trovare la corrispondenza di zero o una occorrenza di un punto (utilizzato come carattere separatore dei decimali).

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

Se il carattere precedente è un punto, trovare la corrispondenza con una o più cifre decimali. È possibile trovare la corrispondenza di questo modello su zero o una volta.

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

Trovare a corrispondenza del modello di una o più cifre decimali seguite da un punto facoltativo e da altre cifre decimali. Equivale al secondo gruppo di acquisizione. La chiamata al metodo Replace(String, String) sostituisce l'intera corrispondenza con la validità di questo gruppo acquisito.

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

Se il primo gruppo acquisito esiste, fargli corrispondere una stringa vuota. In caso contrario, trovare la corrispondenza di zero o più spazi vuoti seguiti da un simbolo di valuta.

.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft