MatchCollection.Count Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u het aantal overeenkomsten op.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Waarde van eigenschap
Het aantal overeenkomsten.
Implementeringen
Uitzonderingen
Er is een time-out opgetreden.
Voorbeelden
In het volgende voorbeeld wordt de Count eigenschap gebruikt om te bepalen of de aanroep naar de Regex.Matches(String, String) methode overeenkomsten heeft gevonden. Zo niet, dan wordt aangegeven dat er geen overeenkomsten zijn gevonden. Anders worden de overeenkomsten opgesomd en worden hun waarde en de positie in de invoertekenreeks weergegeven waarop ze zijn gevonden.
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
Het reguliere expressiepatroon \d+ komt overeen met een of meer decimale tekens in een invoertekenreeks.
Opmerkingen
Als u afzonderlijke leden van het MatchCollection object opent door de waarde van de eigenschap van de verzameling Count op te halen, zorgt u ervoor dat de reguliere expressie-engine de verzameling vult met behulp van directe evaluatie. ln contrast, het aanroepen van de methode GetEnumerator (of met behulp van de instructie foreach in C# en de For Each... Next instructie in Visual Basic) zorgt ervoor dat de reguliere expressie-engine de verzameling indien nodig vult met behulp van luie evaluatie. Directe evaluatie kan een veel duurdere methode zijn om de verzameling te bouwen dan luie evaluatie.
Omdat het object over het MatchCollection algemeen wordt gevuld met behulp van luie evaluatie, kan het proberen om het aantal elementen in de verzameling te bepalen voordat het volledig is gevuld, een RegexMatchTimeoutException uitzondering genereren. Deze uitzondering kan worden gegenereerd als er een time-outwaarde voor overeenkomende bewerkingen van kracht is en de poging om één overeenkomst te vinden die het time-outinterval overschrijdt.