Condividi tramite


MatchCollection.Item[Int32] Proprietà

Definizione

Ottiene un singolo membro della raccolta.

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

Parametri

i
Int32

Indice nella Match raccolta.

Valore della proprietà

Sottostringa acquisita in corrispondenza della posizione i nella raccolta.

Implementazioni

Eccezioni

i è minore di 0 o maggiore o uguale a Count.

Si è verificato un timeout.

Esempio

Nell'esempio seguente viene analizzata la prima frase di Nathaniel Hawthorne's House of the Seven Gables e viene restituito un MatchCollection oggetto che contiene tutte le parole che iniziano con un carattere maiuscolo o minuscolo "h". La Item[] proprietà viene quindi utilizzata per recuperare ogni parola e visualizzarla nella console.

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

L'esempio produce l'output seguente:

Half
house
huge

Commenti

In C# la Item[] proprietà è un indicizzatore, non viene fatto riferimento in modo esplicito nel codice, ma consente l'accesso alla MatchCollection raccolta come se fosse una matrice.

In genere, i singoli elementi nell'oggetto MatchCollection sono accessibili dal relativo indice solo dopo che il numero totale di elementi nell'insieme è stato determinato dalla Count proprietà . Tuttavia, l'accesso alla Count proprietà fa sì che il motore delle espressioni regolari usi la valutazione diretta per compilare la raccolta contemporaneamente. Questo è in genere più costoso rispetto all'iterazione della raccolta usando il GetEnumerator metodo , l'istruzione C# foreach o l'istruzione Visual Basic For Each...Next .

Poiché l'oggetto MatchCollection viene in genere popolato usando la valutazione differita, il tentativo di passare a una corrispondenza specifica può generare un'eccezione RegexMatchTimeoutException . Questa eccezione può essere generata se è attivo un valore di timeout per le operazioni di corrispondenza e il tentativo di trovare una corrispondenza specifica supera tale intervallo di timeout.

Si applica a

Vedi anche