Partilhar via


Como consultar caracteres em uma cadeia de caracteres (LINQ)

Porque o String classe implementa a genérica IEnumerable interface, qualquer seqüência de caracteres pode ser consultada como uma seqüência de caracteres. No entanto, isso não é um uso comum do LINQ. Para operações de correspondência de padrão complexa, use o Regex classe.

Exemplo

O exemplo a seguir consulta para determinar o número de dígitos numéricos, que ele contém uma seqüência de caracteres. Observe que a consulta "detém" depois que ele é executado pela primeira vez. Isso é possível porque a consulta em si não armazena os resultados reais.

Class QueryAString

    Shared Sub Main()

        ' A string is an IEnumerable data source. 
        Dim aString As String = "ABCDE99F-J74-12-89A" 

        ' Select only those characters that are numbers 
        Dim stringQuery = From ch In aString 
                          Where Char.IsDigit(ch) 
                          Select ch
        ' Execute the query 
        For Each c As Char In stringQuery
            Console.Write(c & " ")
        Next 

        ' Call the Count method on the existing query. 
        Dim count As Integer = stringQuery.Count()
        Console.WriteLine(System.Environment.NewLine & "Count = " & count)

        ' Select all characters before the first '-' 
        Dim stringQuery2 = aString.TakeWhile(Function(c) c <> "-")

        ' Execute the second query 
        For Each ch In stringQuery2
            Console.Write(ch)
        Next

        Console.WriteLine(System.Environment.NewLine & "Press any key to exit")
        Console.ReadKey()
    End Sub 
End Class 
' Output: 
' 9 9 7 4 1 2 8 9  
' Count = 8 
' ABCDE99F
class QueryAString
{
    static void Main()
    {
        string aString = "ABCDE99F-J74-12-89A";

        // Select only those characters that are numbers
        IEnumerable<char> stringQuery =
          from ch in aString
          where Char.IsDigit(ch)
          select ch;

        // Execute the query 
        foreach (char c in stringQuery)
            Console.Write(c + " ");

        // Call the Count method on the existing query. 
        int count = stringQuery.Count();
        Console.WriteLine("Count = {0}", count);

        // Select all characters before the first '-'
        IEnumerable<char> stringQuery2 = aString.TakeWhile(c => c != '-');

        // Execute the second query 
        foreach (char c in stringQuery2)
            Console.Write(c);

        Console.WriteLine(System.Environment.NewLine + "Press any key to exit");
        Console.ReadKey();
    }
}
/* Output:
  Output: 9 9 7 4 1 2 8 9
  Count = 8
  ABCDE99F
*/

Compilando o código

  • Criar um Visual Studio o projeto que se destina a .NET Framework versão 3.5. Por padrão, o projeto tem uma referência a System.Core.dll e um using diretiva (C#) ou Imports instrução (Visual Basic) para o namespace System. LINQ. No C# projetos, adicione um using diretriz para o namespace System. IO.

  • Copie este código para seu projeto.

  • Pressione F5 para compilar e executar o programa.

  • Pressione qualquer tecla para sair da janela do console.

Consulte também

Tarefas

Como combinar consultas LINQ a expressões regulares

Conceitos

LINQ e cadeias de caracteres