Compartilhar via


MatchEvaluator Delegar

Definição

Representa o método que é chamado sempre que uma correspondência da expressão regular é encontrada durante uma operação de método de 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 

Parâmetros

match
Match

O objeto Match que representa uma correspondência da expressão regular única durante uma operação do método de Replace.

Valor Retornado

String

Uma cadeia de caracteres retornada pelo método que é representada pelo delegado MatchEvaluator.

Atributos

Exemplos

O exemplo de código a seguir usa o MatchEvaluator delegado para substituir cada grupo correspondente de caracteres pelo número da ocorrência de correspondência.

#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

Comentários

Você pode usar um MatchEvaluator método delegado para executar uma operação de verificação ou manipulação personalizada para cada correspondência encontrada por um método de substituição, como Regex.Replace(String, MatchEvaluator). Para cada cadeia de caracteres correspondente, o Replace método chama o MatchEvaluator método delegado com um Match objeto que representa a correspondência. O método delegado executa qualquer processamento que você preferir e retorna uma cadeia de caracteres que o Replace método substitui para a cadeia de caracteres correspondente.

Métodos de Extensão

GetMethodInfo(Delegate)

Obtém um objeto que representa o método representado pelo delegado especificado.

Aplica-se a

Confira também