MatchCollection.Item[Int32] Proprietà

Definizione

Ottiene un singolo membro della raccolta.Gets an individual member of the collection.

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 raccolta Match.Index into the Match collection.

Valore della proprietà

Sottostringa acquisita alla posizione i della raccolta.The captured substring at position i in the collection.

Eccezioni

i è minore di 0 oppure maggiore o uguale a Count.i is less than 0 or greater than or equal to Count.

Si è verificato un timeout.A time-out occurred.

Esempi

Nell'esempio seguente viene analizzata la prima frase della casa di Nathaniel Hawthorne dei sette timpani e viene restituito un MatchCollection oggetto che contiene tutte le parole che iniziano con una "h" maiuscola o minuscola.The following example parses the first sentence of Nathaniel Hawthorne's House of the Seven Gables and returns a MatchCollection object that contains all words that begin with either an uppercase or lowercase "h". La proprietà Item[Int32] viene quindi utilizzata per recuperare ogni parola e visualizzarla nella console.The Item[Int32] property is then used to retrieve each word and display it to the 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

Questo esempio produce il seguente output:The example produces the following output:

Half  
house  
huge  

Commenti

In C#, la proprietà Item[Int32] è un indicizzatore; non viene fatto riferimento in modo esplicito nel codice, ma consente l'accesso alla raccolta di MatchCollection come se fosse una matrice.In C#, the Item[Int32] property is an indexer; it is not explicitly referenced in code, but instead allows the MatchCollection collection to be accessed as if it were an array.

In genere, i singoli elementi nell'oggetto MatchCollection sono accessibili in base al relativo indice solo dopo che il numero totale di elementi nella raccolta è stato determinato dalla proprietà Count.Typically, individual items in the MatchCollection object are accessed by their index only after the total number of items in the collection has been determined from the Count property. Tuttavia, l'accesso alla proprietà Count fa in modo che il motore delle espressioni regolari usi la valutazione diretta per compilare la raccolta in una sola volta.However, accessing the Count property causes the regular expression engine to use direct evaluation to build the collection all at once. Questo è in genere più costoso dell'iterazione della raccolta usando il metodo GetEnumerator C# , l'istruzione foreach o l'istruzione Visual Basic For Each...Next.This is typically more expensive than iterating the collection using the GetEnumerator method, the C# foreach statement, or the Visual Basic For Each...Next statement.

Poiché l'oggetto MatchCollection viene in genere popolato utilizzando la valutazione lazy, il tentativo di passare a una corrispondenza specifica può generare un'eccezione RegexMatchTimeoutException.Because the MatchCollection object is generally populated by using lazy evaluation, trying to navigate to a specific match may throw a RegexMatchTimeoutException exception. 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.This exception can be thrown if a time-out value for matching operations is in effect, and the attempt to find a specific match exceeds that time-out interval.

Si applica a

Vedi anche