MatchEvaluator-Delegat
Stellt die Methode dar, die immer dann aufgerufen wird, wenn während eines Replace-Methodenvorgangs eine Übereinstimmung für einen regulären Ausdruck gefunden wird.
Namespace: System.Text.RegularExpressions
Assembly: System (in system.dll)
Syntax
'Declaration
<SerializableAttribute> _
Public Delegate Function MatchEvaluator ( _
match As Match _
) As String
'Usage
Dim instance As New MatchEvaluator(AddressOf HandlerMethod)
[SerializableAttribute]
public delegate string MatchEvaluator (
Match match
)
[SerializableAttribute]
public delegate String^ MatchEvaluator (
Match^ match
)
/** @delegate */
/** @attribute SerializableAttribute() */
public delegate String MatchEvaluator (
Match match
)
JScript unterstützt die Verwendung von Delegaten, aber nicht die Deklaration von neuen Delegaten.
Parameter
- match
Das Match-Objekt, das eine einzelne Übereinstimmung mit einem regulären Ausdruck während eines Replace-Methodenvorgangs darstellt.
Rückgabewert
Eine Zeichenfolge, die von der durch den MatchEvaluator-Delegaten dargestellten Methode zurückgegeben wird.
Hinweise
Sie können anhand einer MatchEvaluator-Delegatenmethode eine benutzerdefinierte Überprüfung oder einen benutzerdefinierten Änderungsvorgang für jede Übereinstimmung durchführen, die von einer Ersetzungsmethode wie Regex.Replace(String,MatchEvaluator) gefunden wird. Die Replace-Methode ruft für jede übereinstimmende Zeichenfolge die MatchEvaluator-Delegatenmethode mit einem Match-Objekt auf, das die Übereinstimmung darstellt. Die Delegatenmethode führt die gewünschte Verarbeitung durch und gibt eine Zeichenfolge zurück, mit dem die Replace-Methode die übereinstimmende Zeichenfolge ersetzt.
Beispiel
Im folgenden Codebeispiel wird der MatchEvaluator-Delegat verwendet, um jede übereinstimmende Zeichengruppe durch die jeweilige Nummer der Übereinstimmung zu ersetzen.
Imports System
Imports System.Text.RegularExpressions
Namespace MyNameSpace
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.
Dim s As String
static i as integer
i = i + 1
Return i.ToString() & i.ToString()
End Function
End Module
End Namespace
using System;
using System.Text.RegularExpressions;
namespace MyNameSpace
{
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;
}
}
#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 );
}
package MyNameSpace;
import System.*;
import System.Text.RegularExpressions.*;
class MyClass
{
public 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);
} //main
public String ReplaceCC(Match m)
{
// Replace each Regex cc match with the number of the occurrence.
i++;
return String.valueOf(i) + String.valueOf(i);
} //ReplaceCC
public static int i = 0;
} //MyClass
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0