MatchCollection.Item[Int32] Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un miembro individual de la colección.
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
Parámetros
Valor de propiedad
Subcadena capturada en la posición i
de la colección.
Implementaciones
Excepciones
i
es menor que 0, o mayor o igual a Count.
Se agotó el tiempo de espera.
Ejemplos
En el ejemplo siguiente se analiza la primera frase de la Casa de Nathaniel Hawthorne de los Siete Gables y se devuelve un MatchCollection objeto que contiene todas las palabras que comienzan por una letra mayúscula o minúscula "h". A Item[] continuación, la propiedad se usa para recuperar cada palabra y mostrarla en la consola.
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
El ejemplo genera el siguiente resultado:
Half
house
huge
Comentarios
En C#, la Item[] propiedad es un indexador; no se hace referencia explícitamente en el código, sino que permite tener acceso a la MatchCollection colección como si fuera una matriz.
Normalmente, solo se obtiene acceso a los elementos individuales del MatchCollection objeto por su índice después de determinar el número total de elementos de la colección a partir de la Count propiedad . Sin embargo, el acceso a la Count propiedad hace que el motor de expresiones regulares use la evaluación directa para compilar la colección a la vez. Normalmente, esto es más caro que iterar la colección mediante el GetEnumerator método , la instrucción de C# foreach
o la instrucción Visual Basic For Each
...Next
.
Dado que el MatchCollection objeto se rellena normalmente mediante la evaluación diferida, intentar navegar a una coincidencia específica puede producir una RegexMatchTimeoutException excepción. Esta excepción se puede producir si un valor de tiempo de espera para las operaciones coincidentes está en vigor y el intento de encontrar una coincidencia específica supera ese intervalo de tiempo de espera.