MatchCollection.Count Propriedade

Definição

Obtém o número de correspondências.

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

Valor da propriedade

Int32

O número de correspondências.

Implementações

Exceções

Ocorreu um tempo limite.

Exemplos

O exemplo a seguir usa a Count propriedade para determinar se a chamada ao Regex.Matches(String, String) método encontrou correspondências. Caso contrário, indica que nenhuma correspondência foi encontrada. Caso contrário, ele enumera as correspondências e exibe seu valor e a posição na cadeia de caracteres de entrada na qual foram encontradas.

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

O padrão \d+ de expressão regular corresponde a um ou mais caracteres decimais em uma cadeia de caracteres de entrada.

Comentários

Acessar membros individuais do MatchCollection objeto recuperando o valor da propriedade da Count coleção faz com que o mecanismo de expressão regular preencha a coleção usando avaliação direta. Em contraste, chamar o GetEnumerator método (ou usar a foreach instrução em C# e a For Eachinstrução ...Next em Visual Basic) faz com que o mecanismo de expressão regular preencha a coleção conforme necessário usando a avaliação lenta. A avaliação direta pode ser um método muito mais caro de compilação da coleção do que a avaliação lenta.

Como o MatchCollection objeto geralmente é preenchido usando uma avaliação lenta, tentar determinar o número de elementos na coleção antes de ser totalmente preenchido pode gerar uma RegexMatchTimeoutException exceção. Essa exceção poderá ser gerada se um valor de tempo limite para operações correspondentes estiver em vigor e a tentativa de encontrar uma única correspondência exceder esse intervalo de tempo limite.

Aplica-se a