MatchCollection.Count Eigenschaft

Definition

Ruft die Anzahl der Übereinstimmungen ab.

public:
 property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer

Eigenschaftswert

Int32

Die Anzahl der Übereinstimmungen.

Implementiert

Ausnahmen

Es ist ein Timeout aufgetreten.

Beispiele

Im folgenden Beispiel wird mit der Count -Eigenschaft bestimmt, ob der Aufruf der Regex.Matches(String, String) -Methode Übereinstimmungen gefunden hat. Wenn dies nicht der Wert ist, wird angegeben, dass keine Übereinstimmungen gefunden wurden. Andernfalls listet sie die Übereinstimmungen auf und zeigt deren Wert und die Position in der Eingabezeichenfolge an, an der sie gefunden wurden.

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

Das Muster für reguläre \d+ Ausdrücke stimmt mit einem oder mehr Dezimalzeichen in einer Eingabezeichenfolge ab.

Hinweise

Der Zugriff auf einzelne Member des Objekts durch Abrufen des Werts der -Eigenschaft der Auflistung bewirkt, dass die Engine für reguläre Ausdrücke die Auflistung mithilfe der direkten MatchCollection Count Auswertung auffüllt. Der ln-Kontrast, der aufruft die -Methode (oder die -Anweisung in C# und die GetEnumerator foreach ...-Anweisung in For Each Visual Basic), bewirkt, dass die Engine für reguläre Ausdrücke die Auflistung bei Bedarf mit verzögerter Auswertung Next auffüllt. Die direkte Auswertung kann eine viel teurere Methode zum Erstellen der Sammlung als eine verzögerte Auswertung sein.

Da das Objekt in der Regel mithilfe der verzögerten Auswertung aufgefüllt wird, kann der Versuch, die Anzahl der Elemente in der Auflistung zu bestimmen, bevor es vollständig aufgefüllt wurde, MatchCollection eine Ausnahme RegexMatchTimeoutException auslösen. Diese Ausnahme kann ausgelöst werden, wenn ein Time out-Wert für abgleichende Vorgänge wirksam ist und der Versuch, eine einzelne Übereinstimmung zu finden, dieses Time out-Intervall überschreitet.

Gilt für