MatchEvaluator 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示此方法,此方法于每次在 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
参数
返回值
由 MatchEvaluator 委托表示的方法返回的字符串。
- 属性
示例
下面的代码示例使用 MatchEvaluator 委托将每组匹配的字符替换为匹配项的数目。
#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)找到的每个匹配项执行自定义验证或操作操作。 对于每个匹配的Replace字符串,该方法使用Match表示匹配项的对象调用MatchEvaluator委托方法。 委托方法执行你喜欢的任何处理,并返回一个字符串,该方法 Replace 替换匹配的字符串。
扩展方法
GetMethodInfo(Delegate) |
获取指示指定委托表示的方法的对象。 |