Vorgehensweise: Abfragen von Zeichen in einer Zeichenfolge (LINQ) (C#)How to: Query for Characters in a String (LINQ) (C#)

Da die String-Klasse die generische IEnumerable<T>-Schnittstelle implementiert, kann jede Zeichenfolge als Folge von Zeichen abgefragt werden.Because the String class implements the generic IEnumerable<T> interface, any string can be queried as a sequence of characters. Dies ist allerdings kein üblicher Einsatz von LINQ.However, this is not a common use of LINQ. Verwenden Sie für komplex Musterabgleichvorgänge die Regex-Klasse.For complex pattern matching operations, use the Regex class.

BeispielExample

In folgendem Beispiel wird eine Zeichenfolge abgefragt, um die Zahl von enthaltenen numerischen Ziffern zu bestimmen.The following example queries a string to determine the number of numeric digits it contains. Beachten Sie, dass die Abfrage „wieder verwendet“ wird, nachdem sie zum ersten Mal ausgeführt wurde.Note that the query is "reused" after it is executed the first time. Dies ist möglich, da die Abfrage selbst keine Ergebnisse speichert.This is possible because the query itself does not store any actual results.

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  
*/  

Kompilieren des CodesCompiling the Code

Erstellen Sie ein neues Projekt, das auf die .NET Framework-Version 3.5 oder höher ausgelegt ist, mit einer Referenz zu System.Core.dll und using-Direktiven für System.Linq- und System.IO-Namespaces.Create a project that targets the .NET Framework version 3.5 or higher, with a reference to System.Core.dll and using directives for the System.Linq and System.IO namespaces.

Siehe auchSee Also

LINQ und Zeichenfolgen (C#)LINQ and Strings (C#)
Vorgehensweise: Kombinieren von LINQ-Abfragen mit regulären Ausdrücken (C#)How to: Combine LINQ Queries with Regular Expressions (C#)