Sdílet prostřednictvím


MatchEvaluator Delegát

Definice

Představuje metodu, která je volána pokaždé, když se během operace metody najde shoda regulárního výrazu Replace .

public delegate System::String ^ MatchEvaluator(Match ^ match);
public delegate string MatchEvaluator(Match match);
[System.Serializable]
public delegate string MatchEvaluator(Match match);
type MatchEvaluator = delegate of Match -> string
[<System.Serializable>]
type MatchEvaluator = delegate of Match -> string
Public Delegate Function MatchEvaluator(match As Match) As String 

Parametry

match
Match

Objekt Match , který představuje jeden regulární výraz odpovídá během Replace operace metody.

Návratová hodnota

Řetězec vrácený metodou, která je reprezentována delegátem MatchEvaluator .

Atributy

Příklady

Následující příklad kódu používá delegáta MatchEvaluator k nahrazení každé odpovídající skupiny znaků číslem výskytu shody.

#using <System.dll>

using namespace System;
using namespace System::Text::RegularExpressions;
ref class MyClass
{
public:
   static int i = 0;
   static String^ ReplaceCC( Match^ m )
   {
      
      // Replace each Regex cc match with the number of the occurrence.
      i++;
      return i.ToString();
   }

};

int main()
{
   String^ sInput;
   String^ sRegex;
   
   // The string to search.
   sInput = "aabbccddeeffcccgghhcccciijjcccckkcc";
   
   // A very simple regular expression.
   sRegex = "cc";
   Regex^ r = gcnew Regex( sRegex );
   
   // Assign the replace method to the MatchEvaluator delegate.
   MatchEvaluator^ myEvaluator = gcnew MatchEvaluator( &MyClass::ReplaceCC );
   
   // Write out the original string.
   Console::WriteLine( sInput );
   
   // Replace matched characters using the delegate method.
   sInput = r->Replace( sInput, myEvaluator );
   
   // Write out the modified string.
   Console::WriteLine( sInput );
}
// The example displays the following output:
//       aabbccddeeffcccgghhcccciijjcccckkcc
//       aabb11ddeeff22cgghh3344iijj5566kk77
using System;
using System.Text.RegularExpressions;

class MyClass
{
   static void Main(string[] args)
   {
      string sInput, sRegex;

      // The string to search.
      sInput = "aabbccddeeffcccgghhcccciijjcccckkcc";

      // A very simple regular expression.
      sRegex = "cc";

      Regex r = new Regex(sRegex);
        
      MyClass c = new MyClass();

      // Assign the replace method to the MatchEvaluator delegate.
      MatchEvaluator myEvaluator = new MatchEvaluator(c.ReplaceCC);
        
      // Write out the original string.
      Console.WriteLine(sInput);

      // Replace matched characters using the delegate method.
      sInput = r.Replace(sInput, myEvaluator);
      
      // Write out the modified string.
      Console.WriteLine(sInput);
   }

   public string ReplaceCC(Match m)
   // Replace each Regex cc match with the number of the occurrence.
   {
      i++;
      return i.ToString() + i.ToString();		
   }
   public static int i=0;
}
// The example displays the following output:
//       aabbccddeeffcccgghhcccciijjcccckkcc
//       aabb11ddeeff22cgghh3344iijj5566kk77
Imports System.Text.RegularExpressions

Module Module1
   Public Sub Main()
      Dim sInput, sRegex As String

      ' The string to search.
      sInput = "aabbccddeeffcccgghhcccciijjcccckkcc"

      ' A very simple regular expression.
      sRegex = "cc"

      Dim r As Regex = New Regex(sRegex)

      ' Assign the replace method to the MatchEvaluator delegate.
      Dim myEvaluator As MatchEvaluator = New MatchEvaluator(AddressOf ReplaceCC)

      ' Write out the original string.
      Console.WriteLine(sInput)
      ' Replace matched characters using the delegate method.
      sInput = r.Replace(sInput, myEvaluator)
      ' Write out the modified string.
      Console.WriteLine(sInput)
   End Sub

   Public Function ReplaceCC(ByVal m As Match) As String
      ' Replace each Regex match with the number of the match occurrence.
      static i as integer
   
      i = i + 1
      Return i.ToString() & i.ToString()
   End Function
End Module
' The example displays the following output:
'       aabbccddeeffcccgghhcccciijjcccckkcc
'       aabb11ddeeff22cgghh3344iijj5566kk77

Poznámky

Metodu delegáta MatchEvaluator můžete použít k provedení vlastní operace ověření nebo manipulace pro každou shodu nalezenou náhradní metodou, jako Regex.Replace(String, MatchEvaluator)je . Pro každý odpovídající řetězec Replace volá metoda delegáta MatchEvaluator metodu s objektem Match , který představuje shodu. Metoda delegáta provede libovolné zpracování, které preferujete, a vrátí řetězec, který Replace metoda nahrazuje odpovídající řetězec.

Metody rozšíření

GetMethodInfo(Delegate)

Získá objekt, který představuje metodu reprezentovanou zadaným delegátem.

Platí pro

Viz také