MatchCollection.Item[Int32] Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen einzelnen Member der Auflistung ab.
public:
virtual property System::Text::RegularExpressions::Match ^ default[int] { System::Text::RegularExpressions::Match ^ get(int i); };
public virtual System.Text.RegularExpressions.Match this[int i] { get; }
member this.Item(int) : System.Text.RegularExpressions.Match
Default Public Overridable ReadOnly Property Item(i As Integer) As Match
Parameter
Eigenschaftswert
Die aufgezeichnete Teilzeichenfolge an Position i
der Auflistung.
Implementiert
Ausnahmen
i
ist kleiner als 0 (null) oder größer oder gleich Count.
Es ist ein Timeout aufgetreten.
Beispiele
Das folgende Beispiel analysiert den ersten Satz von Nathaniel Hawthornes Haus der Sieben Gables und gibt ein MatchCollection -Objekt zurück, das alle Wörter enthält, die mit einem Groß- oder Kleinbuchstaben "h" beginnen. Die Item[] -Eigenschaft wird dann verwendet, um jedes Wort abzurufen und in der Konsole anzuzeigen.
using System;
using System.Text.RegularExpressions;
public class Class1
{
public static void Main()
{
string sentence = "Half-way down a by-street of one of our New England towns, stands a rusty wooden " +
"house, with seven acutely peaked gables, facing towards various points of the compass, " +
"and a huge, clustered chimney in the midst.";
string pattern = @"\b[hH]\w*\b";
MatchCollection matches = Regex.Matches(sentence, pattern);
for (int ctr=0; ctr < matches.Count; ctr++)
{
Console.WriteLine(matches[ctr].Value);
}
}
}
Option Strict On
Imports System.Text.RegularExpressions
Module TestMatches
Public Sub Main()
Dim pattern As String = "\b[hH]\w*\b"
Dim sentence As String
sentence = "Half-way down a by-street of one of our New England towns, stands a rusty wooden " & _
"house, with seven acutely peaked gables, facing towards various points of the compass, " & _
"and a huge, clustered chimney in the midst."
Dim matches As MatchCollection = Regex.Matches(sentence, pattern)
For ctr As Integer = 0 To Matches.Count - 1
Console.WriteLine(matches.Item(ctr).Value)
Next
End Sub
End Module
Das Beispiel führt zur folgenden Ausgabe:
Half
house
huge
Hinweise
In C# ist die Item[] Eigenschaft ein Indexer. Sie wird nicht explizit im Code referenziert, sondern ermöglicht den Zugriff auf die MatchCollection Auflistung, als wäre es ein Array.
In der MatchCollection Regel wird von ihrem Index nur auf einzelne Elemente im -Objekt zugegriffen, nachdem die Gesamtanzahl der Elemente in der Auflistung anhand der Count -Eigenschaft ermittelt wurde. Der Zugriff auf die Count -Eigenschaft bewirkt jedoch, dass die Engine für reguläre Ausdrücke die direkte Auswertung verwendet, um die Auflistung gleichzeitig zu erstellen. Dies ist in der Regel teurer als das Durchlaufen der Auflistung mit der GetEnumerator -Methode, der C#- foreach
Anweisung oder der Visual Basic For Each
...Next
-Anweisung.
Da das Objekt in der MatchCollection Regel mithilfe der verzögerten Auswertung aufgefüllt wird, kann der Versuch, zu einer bestimmten Übereinstimmung zu navigieren, eine RegexMatchTimeoutException Ausnahme auslösen. Diese Ausnahme kann ausgelöst werden, wenn ein Timeoutwert für Abgleichsvorgänge wirksam ist und der Versuch, eine bestimmte Übereinstimmung zu finden, dieses Timeoutintervall überschreitet.