Replace-Methode (String, String, MatchEvaluator, RegexOptions)
Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Regex.Replace-Methode (String, String, MatchEvaluator, RegexOptions)

Aktualisiert: August 2010

Ersetzt in einer angegebenen Eingabezeichenfolge alle mit einem angegebenen regulären Ausdruck übereinstimmenden Zeichenfolgen durch eine von einem MatchEvaluator-Delegaten zurückgegebene Zeichenfolge. Durch angegebene Optionen wird die Suche nach Übereinstimmungen geändert.

Namespace:  System.Text.RegularExpressions
Assembly:  System (in System.dll)

public static string Replace(
	string input,
	string pattern,
	MatchEvaluator evaluator,
	RegexOptions options
)

Parameter

input
Typ: System.String
Die nach einer Übereinstimmung zu durchsuchende Zeichenfolge.
pattern
Typ: System.String
Das Muster eines regulären Ausdrucks, mit dem Übereinstimmungen gefunden werden sollen.
evaluator
Typ: System.Text.RegularExpressions.MatchEvaluator
Eine benutzerdefinierte Methode, die jede Übereinstimmung prüft und die ursprüngliche übereinstimmende Zeichenfolge oder eine Ersetzungszeichenfolge zurückgibt.
options
Typ: System.Text.RegularExpressions.RegexOptions
Eine bitweise Kombination der Enumerationswerte, die Optionen für Vergleiche angeben.

Rückgabewert

Typ: System.String
Eine neue, mit der Eingabezeichenfolge identische Zeichenfolge. Die Ersetzungszeichenfolge ersetzt jedoch alle übereinstimmenden Zeichenfolgen.

AusnahmeBedingung
ArgumentException

Beim Analysieren des regulären Ausdrucks ist ein Fehler aufgetreten.

ArgumentNullException

input , pattern oder evaluator ist null .

ArgumentOutOfRangeException

options ist keine gültige bitweise Kombination von RegexOptions-Werten.

Die Regex.Replace(String, String, MatchEvaluator, RegexOptions)-Methode ist hilfreich beim Ersetzen einer Übereinstimmung mit einem regulären Ausdruck, wenn eine der folgenden Bedingungen zutrifft:

  • Die Ersetzungszeichenfolge kann nicht einfach durch ein Ersetzungsmuster eines regulären Ausdrucks angegeben werden.

  • Die Ersetzungszeichenfolge ergibt sich aus der Verarbeitung der übereinstimmenden Zeichenfolge.

  • Die Ersetzungszeichenfolge ergibt sich aus der bedingten Verarbeitung.

Die Methode entspricht dem Aufrufen der Regex.Matches(String, String, RegexOptions)-Methode und dem Weitergeben der einzelnen Match-Objekte in der zurückgegebenen MatchCollection-Auflistung an den evaluator-Delegaten.

Der pattern-Parameter besteht aus verschiedenen Sprachelementen für reguläre Ausdrücke, die die auf Übereinstimmung zu prüfende Zeichenfolge symbolisch beschreiben. Weitere Informationen zu regulären Ausdrücken finden Sie unter Reguläre Ausdrücke von .NET Framework und Sprachelemente für reguläre Ausdrücke.

Der evaluator-Parameter ist der Delegat für eine benutzerdefinierte Methode, die Sie definieren und die die einzelnen Übereinstimmungen überprüft. Die benutzerdefinierte Methode muss die folgende Signatur aufweisen, um mit dem MatchEvaluator-Delegaten übereinzustimmen.


public string MatchEvaluatorMethod(Match match)


Die benutzerdefinierte Methode gibt eine Zeichenfolge zurück, die die übereinstimmende Eingabe ersetzt.

Wenn der options-Parameter den RightToLeft-Enumerationswert angibt, beginnt die Suche nach Übereinstimmungen am Ende der Eingabezeichenfolge und verläuft von rechts nach links. Andernfalls beginnt die Suche am Anfang der Eingabezeichenfolge und verläuft von links nach rechts.

Das folgende Beispiel extrahiert mithilfe eines regulären Ausdrucks die einzelnen Wörter aus einer Zeichenfolge und verwendet anschließend einen MatchEvaluator-Delegaten, um eine Methode mit dem Namen WordScramble aufzurufen, die die einzelnen Buchstaben im Wort durcheinanderbringt. Dafür erstellt die WordScramble-Methode ein Array, das die Zeichen aus der Übereinstimmung enthält. Darüber hinaus wird ein paralleles Array erstellt, das mit zufälligen Gleitkommazahlen aufgefüllt wird. Die Arrays werden sortiert, indem die Array.Sort<TKey, TValue>(TKey[], TValue[], IComparer<TKey>)-Methode aufgerufen wird, und das sortierte Array wird als Argument für einen String-Klassenkonstruktor bereitgestellt. Diese neu erstellte Zeichenfolge wird dann von der WordScramble-Methode zurückgegeben. Das Muster eines regulären Ausdrucks \w+ entspricht mindestens einem Wortzeichen; das Modul für reguläre Ausdrücke fügt weiterhin der Übereinstimmung Zeichen hinzu, bis es auf ein Nichtwortzeichen stößt, z. B. ein Leerzeichen. Der Aufruf der Replace-Methode schließt die RegexOptions.IgnorePatternWhitespace-Option ein, damit der Kommentar im Muster eines regulären Ausdrucks \w+ # Matches all the characters in a word. vom Modul für reguläre Ausdrücke ignoriert wird.


using System;
using System.Collections;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string words = "letter alphabetical missing lack release " + 
                     "penchant slack acryllic laundry cease";
      string pattern = @"\w+  # Matches all the characters in a word.";                            
      MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
      Console.WriteLine("Original words:");
      Console.WriteLine(words);
      Console.WriteLine();
      Console.WriteLine("Scrambled words:");
      Console.WriteLine(Regex.Replace(words, pattern, evaluator, 
                                      RegexOptions.IgnorePatternWhitespace));      
   }

   public static string WordScrambler(Match match)
   {
      int arraySize = match.Value.Length;
      // Define two arrays equal to the number of letters in the match.
      double[] keys = new double[arraySize];
      char[] letters = new char[arraySize];

      // Instantiate random number generator'
      Random rnd = new Random();

      for (int ctr = 0; ctr < match.Value.Length; ctr++)
      {
         // Populate the array of keys with random numbers.
         keys[ctr] = rnd.NextDouble();
         // Assign letter to array of letters.
         letters[ctr] = match.Value[ctr];
      }         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default);      
      return new String(letters);
   }
}
// The example displays output similar to the following:
//    Original words:
//    letter alphabetical missing lack release penchant slack acryllic laundry cease
//    
//    Scrambled words:
//    etlert liahepalbcat imsgsni alkc ereelsa epcnnaht lscak cayirllc alnyurd ecsae


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

August 2010

Beispiel hinzugefügt.

Kundenfeedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2016 Microsoft