MatchCollection.Count Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает количество соответствий.
public:
property int Count { int get(); };
public int Count { get; }
member this.Count : int
Public ReadOnly Property Count As Integer
Значение свойства
Количество соответствий.
Реализации
Исключения
Время ожидания истекло.
Примеры
В следующем примере свойство используется Count для определения того, найден ли вызов Regex.Matches(String, String) метода совпадений. В противном случае это означает, что совпадений не найдено. В противном случае он перечисляет совпадения и отображает их значение и позицию во входной строке, в которой они были найдены.
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
Шаблон \d+
регулярного выражения соответствует одному или нескольким десятичным символам во входной строке.
Комментарии
Доступ к отдельным членам MatchCollection объекта путем получения значения свойства коллекции Count приводит к тому, что обработчик регулярных выражений заполняет коллекцию с помощью прямой оценки. Контрастность ln, вызов GetEnumerator метода (или использование foreach
инструкции в C# и For Each
оператор ...Next
в Visual Basic) приводит к тому, что обработчик регулярных выражений заполняет коллекцию по мере необходимости с помощью отложенной оценки. Прямая оценка может быть гораздо более дорогим методом сборки коллекции, чем отложенная оценка.
MatchCollection Поскольку объект обычно заполняется с помощью отложенной оценки, попытка определить количество элементов в коллекции до полного заполнения может вызвать RegexMatchTimeoutException исключение. Это исключение может возникать, если действует значение времени ожидания для соответствующих операций, и попытка найти одно совпадение превышает этот интервал времени ожидания.