Feedback

VB - Strings schnell zählen

Veröffentlicht von am 10/28/2006
(3 Bewertungen)
Diese Funktion zählt die Anzahl eines Strings innerhalb eines anderen Strings. Dies ist eine sehr schnelle und speicherfreundliche Methode.

Man könnte das ganze auch einfacher machen, indem man einfach die Split Funktion benutzt und dann die länge des resultierenden Arrays ausließt. Das dauert aber bei großen Strings (z.B. große Textdateien) dann länger und es brauch mehr Speicher.
''' <summary>
''' Diese Funktion zählt die Anzahl eines Strings innerhalb eines anderen Strings
''' </summary>
''' <param name="Expression">Der String in dem gesucht werden soll</param>
''' <param name="FindWhat">Der String nach dem gesucht werden soll</param>
''' <param name="CompareMethod">Gibt die Vergleichsmethode an, Binary ist CaseSensitive</param>
Public Function CountString(ByVal Expression As String, ByVal FindWhat As String, Optional ByVal CompareMethod As Microsoft.VisualBasic.CompareMethod = CompareMethod.Text) As Long
    Dim Count As Long = 0
    Dim CurrPos As Long = 0
    Dim OldPos As Long = 0
    Dim FindWhatLen As Integer = FindWhat.Length
    Dim StepLen As Integer = 1
    Do
        CurrPos = InStr(CurrPos + StepLen, Expression, FindWhat, CompareMethod)
        If CurrPos <> OldPos And CurrPos <> 0 Then
            Count += 1
            OldPos = CurrPos
            StepLen = FindWhatLen
        Else
            Exit Do
        End If
    Loop
    Return Count
End Function
Abgelegt unter String, Anzahl.

1 Kommentare zum Snippet

Klemens Nanni schrieb am 3/14/2010:
Auch hier ist zu empfehlen, anstelle des Operators 'And' seinen Freund 'AndAlso' zu verwenden.

'And' prüft durchweg alle Bedingungen, obgleich eine nicht eintrifft.
'AndAlso' prüft hingegen nur solange, bis eine Bedingung nicht erfüllt ist.
 

Logge dich ein, um hier zu kommentieren!