MatchCollection.Count Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Eşleşme sayısını alır.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Özellik Değeri
Eşleşme sayısı.
Uygulamalar
Özel durumlar
Zaman aşımı oluştu.
Örnekler
Aşağıdaki örnek, yöntemine yapılan çağrının Count herhangi bir eşleşme bulup bulmadığını belirlemek için Regex.Matches(String, String) özelliğini kullanır. Aksi takdirde eşleşme bulunamadığını gösterir. Aksi takdirde, eşleşmeleri numaralandırır ve değerlerini ve bulundukları giriş dizesindeki konumu görüntüler.
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
Normal ifade deseni \d+
, giriş dizesindeki bir veya daha fazla ondalık karakterle eşleşir.
Açıklamalar
Koleksiyonun Count özelliğinin değerini alarak nesnenin MatchCollection tek tek üyelerine erişmek, normal ifade altyapısının doğrudan değerlendirme kullanarak koleksiyonu doldurmasına neden olur. Buna karşılık, yöntemini çağırmak GetEnumerator (veya C# dilinde deyimini ve For Each
Visual Basic'te ...Next
deyimini kullanmakforeach
), normal ifade altyapısının yavaş değerlendirme kullanarak koleksiyonu gerektiği gibi doldurmasına neden olur. Doğrudan değerlendirme, koleksiyonu oluşturmanın gecikmeli değerlendirmeden çok daha pahalı bir yöntemi olabilir.
MatchCollection Nesne genellikle gecikmeli değerlendirme kullanılarak dolduruldığından, tam olarak doldurulmadan önce koleksiyondaki öğelerin sayısını belirlemeye çalışmak bir RegexMatchTimeoutException özel durum oluşturabilir. Eşleşen işlemler için bir zaman aşımı değeri etkinse ve tek bir eşleşme bulma girişimi bu zaman aşımı aralığını aşarsa bu özel durum oluşturulabilir.