Gewusst wie: Abfragen von Zeichen in einer Zeichenfolge (LINQ)
Da die String-Klasse die generische IEnumerable<T>-Schnittstelle implementiert, kann jede Zeichenfolge als eine Sequenz von Zeichen abgefragt werden. Dies ist jedoch nicht die normale Verwendung von LINQ. Verwenden Sie für komplexe Mustervergleichsoperationen die Regex-Klasse.
Beispiel
Im folgenden Beispiel wird eine Zeichenfolge abgefragt, um die Anzahl numerischer Ziffern zu bestimmen, die darin enthalten ist. Beachten Sie, dass die Abfrage wiederverwendet wird, nachdem sie das erste Mal ausgeführt wurde. Dies ist möglich, da die Abfrage selbst die eigentlichen Ergebnisse nicht speichert.
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
*/
Kompilieren des Codes
Erstellen Sie ein Visual Studio-Projekt für die .NET Framework-Version 3.5. Standardmäßig weist das Projekt einen Verweis auf System.Core.dll und eine using-Direktive (C#) oder eine Imports-Anweisung (Visual Basic) für den System.Linq-Namespace auf. Fügen Sie in C#-Projekten eine using-Direktive für den System.IO-Namespace hinzu.
Kopieren Sie diesen Code ins Projekt.
Drücken Sie F5, um das Programm zu kompilieren und auszuführen.
Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen.
Siehe auch
Aufgaben
Gewusst wie: Kombinieren von LINQ-Abfragen mit regulären Ausdrücken