MatchCollection.Count Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá počet shod.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Hodnota vlastnosti
Počet shod.
Implementuje
Výjimky
Došlo k vypršení časového limitu.
Příklady
Následující příklad používá Count vlastnost k určení, zda volání Regex.Matches(String, String) metody zjistil nějaké shody. Pokud ne, znamená to, že nebyly nalezeny žádné shody. V opačném případě zobrazí výčet shod a zobrazí jejich hodnotu a pozici ve vstupním řetězci, ve kterém byly nalezeny.
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
Vzor regulárního výrazu \d+
odpovídá jednomu nebo více desetinným znakům ve vstupním řetězci.
Poznámky
Přístup k jednotlivým členům objektu MatchCollection načtením hodnoty vlastnosti kolekce Count způsobí, že modul regulárních výrazů naplní kolekci pomocí přímého vyhodnocení. Naproti tomu volání GetEnumerator metody (nebo použití foreach
příkazu v jazyce C# a For Each
příkazu ...Next
v Visual Basic) způsobí, že modul regulárních výrazů naplní kolekci podle potřeby pomocí opožděného vyhodnocení. Přímé hodnocení může být mnohem dražší metodou vytváření kolekce než opožděné vyhodnocení.
MatchCollection Vzhledem k tomu, že se objekt obvykle naplní pomocí opožděného vyhodnocení, může pokus o určení počtu prvků v kolekci před tím, než byl plně naplněn, vyvolá RegexMatchTimeoutException výjimku. Tuto výjimku lze vyvolat, pokud je platná hodnota časového limitu pro odpovídající operace a pokus o nalezení jedné shody překročí tento časový limit.