MatchCollection.Count Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera liczbę dopasowań.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Wartość właściwości
Liczba dopasowań.
Implementuje
Wyjątki
Wystąpił limit czasu.
Przykłady
W poniższym przykładzie użyto właściwości w Count celu określenia, czy wywołanie Regex.Matches(String, String) metody znalazło dopasowania. Jeśli nie, oznacza to, że nie znaleziono dopasowań. W przeciwnym razie wylicza dopasowania i wyświetla ich wartość oraz pozycję w ciągu wejściowym, w którym zostały znalezione.
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
Wzorzec \d+
wyrażenia regularnego jest zgodny z co najmniej jednym znakiem dziesiętnym w ciągu wejściowym.
Uwagi
Uzyskiwanie dostępu do poszczególnych elementów członkowskich MatchCollection obiektu przez pobranie wartości właściwości kolekcji Count powoduje, że aparat wyrażeń regularnych wypełnia kolekcję przy użyciu oceny bezpośredniej. Natomiast wywołanie GetEnumerator metody (lub użycie foreach
instrukcji w języku C# i For Each
instrukcji ...Next
w języku Visual Basic) powoduje, że aparat wyrażeń regularnych wypełnia kolekcję zgodnie z potrzebami przy użyciu leniwej oceny. Ocena bezpośrednia może być znacznie droższą metodą budowania kolekcji niż leniwa ocena.
MatchCollection Ponieważ obiekt jest zazwyczaj wypełniany przy użyciu oceny leniwej, próba określenia liczby elementów w kolekcji, zanim została w pełni wypełniona, może zgłosić RegexMatchTimeoutException wyjątek. Ten wyjątek można zgłosić, jeśli wartość limitu czasu dla pasujących operacji jest obowiązująca, a próba znalezienia pojedynczego dopasowania przekracza ten interwał limitu czasu.