Freigeben über


Vorgehensweise: Zählen von Vorkommen eines Worts in einer Zeichenfolge (LINQ) (Visual Basic)

In diesem Beispiel wird gezeigt, wie Sie eine LINQ-Abfrage verwenden, um die Vorkommen eines angegebenen Worts in einer Zeichenfolge zu zählen. Beachten Sie, dass zum Ausführen der Anzahl zuerst die Split Methode aufgerufen wird, um ein Array von Wörtern zu erstellen. Es gibt eine Leistungskosten für die Split Methode. Wenn der einzige Vorgang für die Zeichenfolge darin besteht, die Wörter zu zählen, sollten Sie stattdessen die Verwendung der Matches Oder IndexOf Methoden in Betracht ziehen. Wenn die Leistung jedoch kein kritisches Problem ist oder Sie den Satz bereits aufteilen, um andere Arten von Abfragen auszuführen, ist es sinnvoll, LINQ auch zum Zählen der Wörter oder Ausdrücke zu verwenden.

Beispiel

Class CountWords

    Shared Sub Main()

        Dim text As String = "Historically, the world of data and the world of objects" &
                  " have not been well integrated. Programmers work in C# or Visual Basic" &
                  " and also in SQL or XQuery. On the one side are concepts such as classes," &
                  " objects, fields, inheritance, and .NET Framework APIs. On the other side" &
                  " are tables, columns, rows, nodes, and separate languages for dealing with" &
                  " them. Data types often require translation between the two worlds; there are" &
                  " different standard functions. Because the object world has no notion of query, a" &
                  " query can only be represented as a string without compile-time type checking or" &
                  " IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to" &
                  " objects in memory is often tedious and error-prone."

        Dim searchTerm As String = "data"

        ' Convert the string into an array of words.
        Dim dataSource As String() = text.Split(New Char() {" ", ",", ".", ";", ":"},
                                                 StringSplitOptions.RemoveEmptyEntries)

        ' Create and execute the query. It executes immediately
        ' because a singleton value is produced.
        ' Use ToLower to match "data" and "Data"
        Dim matchQuery = From word In dataSource
                      Where word.ToLowerInvariant() = searchTerm.ToLowerInvariant()
                      Select word

        ' Count the matches.
        Dim count As Integer = matchQuery.Count()
        Console.WriteLine(count & " occurrence(s) of the search term """ &
                          searchTerm & """ were found.")

        ' Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.")
        Console.ReadKey()
    End Sub
End Class
' Output:
' 3 occurrence(s) of the search term "data" were found.

Kompilieren des Codes

Erstellen Sie ein Visual Basic-Konsolenanwendungsprojekt mit einer Imports Anweisung für den System.Linq-Namespace.

Siehe auch