MatchCollection.Count 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 el número de coincidencias.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Valor de propiedad
Número de coincidencias.
Implementaciones
Excepciones
Se agotó el tiempo de espera.
Ejemplos
En el ejemplo siguiente se usa la Count propiedad para determinar si la llamada al Regex.Matches(String, String) método encontró coincidencias. Si no es así, indica que no se encontraron coincidencias. De lo contrario, enumera las coincidencias y muestra su valor y la posición de la cadena de entrada en la que se encontraron.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\d+";
string[] inputs = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" };
foreach (var input in inputs) {
MatchCollection matches = Regex.Matches(input, pattern);
Console.WriteLine("Input: {0}", input);
if (matches.Count == 0)
Console.WriteLine(" No matches");
else
foreach (Match m in matches)
Console.WriteLine(" {0} at index {1}", m.Value, m.Index);
Console.WriteLine();
}
}
}
// The example displays the following output:
// Input: This sentence contains no numbers.
// No matches
//
// Input: 123 What do I see?
// 123 at index 0
//
// Input: 2468 369 48 5
// 2468 at index 0
// 369 at index 5
// 48 at index 9
// 5 at index 12
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\d+"
Dim inputs() As String = { "This sentence contains no numbers.",
"123 What do I see?",
"2468 369 48 5" }
For Each inputStr In inputs
Dim matches As MatchCollection = Regex.Matches(inputStr, pattern)
Console.WriteLine("Input: {0}", inputStr)
If matches.Count = 0
Console.WriteLine(" No matches")
Else
For Each m As Match In matches
Console.WriteLine(" {0} at index {1}", m.Value, m.Index)
Next
End If
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Input: This sentence contains no numbers.
' No matches
'
' Input: 123 What do I see?
' 123 at index 0
'
' Input: 2468 369 48 5
' 2468 at index 0
' 369 at index 5
' 48 at index 9
' 5 at index 12
El patrón \d+
de expresión regular coincide con uno o varios caracteres decimales en una cadena de entrada.
Comentarios
El acceso a miembros individuales del MatchCollection objeto recuperando el valor de la propiedad de Count la colección hace que el motor de expresiones regulares rellene la colección mediante la evaluación directa. Por el contrario, llamar al GetEnumerator método (o usar la foreach
instrucción en C# y la instrucción ...Next
en Visual Basic) hace que el motor de expresiones regulares rellene la colección según sea necesario mediante la For Each
evaluación diferida. La evaluación directa puede ser un método mucho más caro de crear la colección que la evaluación diferida.
Dado que el MatchCollection objeto se rellena generalmente mediante la evaluación diferida, intentar determinar el número de elementos de la colección antes de que se haya rellenado completamente puede producir una RegexMatchTimeoutException excepción. Esta excepción se puede producir si hay un valor de tiempo de espera para las operaciones coincidentes y el intento de encontrar una sola coincidencia supera ese intervalo de tiempo de espera.