MatchEvaluator 委托

定义

表示此方法,此方法于每次在 Replace 方法操作期间找到单一正则表达式匹配时调用。Represents the method that is called each time a regular expression match is found during a Replace method operation.

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

参数

match
Match

Match 对象表示 Replace 方法操作期间的单个正则表达式匹配。The Match object that represents a single regular expression match during a Replace method operation.

返回值

String

MatchEvaluator 委托表示的方法返回的字符串。A string returned by the method that is represented by the MatchEvaluator delegate.

继承
MatchEvaluator
属性

示例

下面的代码示例使用MatchEvaluator委托将每个匹配的字符组替换为匹配项的匹配项的数目。The following code example uses the MatchEvaluator delegate to replace every matched group of characters with the number of the match occurrence.

#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

注解

可以使用MatchEvaluator委托方法为替换方法 (如) Regex.Replace(String, MatchEvaluator)找到的每个匹配项执行自定义验证或操作操作。You can use a MatchEvaluator delegate method to perform a custom verification or manipulation operation for each match found by a replacement method such as Regex.Replace(String, MatchEvaluator). 对于每个匹配的字符串Replace , 方法使用MatchEvaluator Match表示匹配的对象调用委托方法。For each matched string, the Replace method calls the MatchEvaluator delegate method with a Match object that represents the match. 委托方法执行你喜欢的任何处理, 并返回一个字符串, Replace该方法将该方法替换为匹配的字符串。The delegate method performs whatever processing you prefer and returns a string that the Replace method substitutes for the matched string.

扩展方法

GetMethodInfo(Delegate)

获取指示指定委托表示的方法的对象。Gets an object that represents the method represented by the specified delegate.

适用于

另请参阅