MatchCollection.Item[Int32] Eigenschaft

Definition

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

i
Int32

Index in der Match-Auflistung.

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.

Gilt für:

Weitere Informationen