Rubrik: Variablen/Strings | VB-Versionen: VB2005, VB2008 | 30.01.09 |
StringCount - Zeichen(folge) in einem String zählen Funktion, die ermittelt wie oft ein beliebiges Zeichen bzw. eine Zeichenfolge in einem String vorkommt. Optional mit oder ohne Berücksichtigung der Groß-/Kleinschreibung. | ||
Autor: Dieter Otter | Bewertung: | Views: 34.959 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Nachfolgende Funktion ermittelt, wie oft ein beliebige Zeichen bzw. eine ganze Zeichenfolge in einem String vorkommt. Hierbei kann optional angegeben werden, ob die Groß-/Kleinschreibung berücksichtigt werden soll oder nicht.
''' <summary> ''' Ermittelt die Anzahl gesuchter Zeichen oder Zeichenfolgen innerhalb eines Strings. ''' </summary> ''' <param name="Text">String, der durchsucht werden soll.</param> ''' <param name="Find">Zeichen oder Zeichenfolge, die gesucht wird.</param> ''' <returns>Anzahl Fundstellen</returns> ''' <remarks>Vergleichstyp: StringComparison.InvariantCultureIgnoreCase)</remarks> Public Function StringCount(ByVal Text As String, ByVal Find As String) As Integer Return StringCount(Text, Find, StringComparison.InvariantCultureIgnoreCase) End Function
''' <summary> ''' Ermittelt die Anzahl gesuchter Zeichen oder Zeichenfolgen innerhalb eines Strings. ''' </summary> ''' <param name="Text">String, der durchsucht werden soll.</param> ''' <param name="Find">Zeichen oder Zeichenfolge, die gesucht wird.</param> ''' <param name="CompareType">Legt fest, ob Groß-/Kleinschreibung berücksichtigt ''' werden soll</param> ''' <returns>Anzahl Fundstellen</returns> Public Function StringCount(ByVal Text As String, ByVal Find As String, _ ByVal CompareType As StringComparison) As Integer ' Wenn Such-String leer, Funktion verlassen If IsNothing(Find) OrElse Find.Length = 0 Then Return -1 Dim count As Integer = 0 Dim pos As Integer = -1 ' Solange nach gesuchtem Zeichen/Zeichenfolge ' suchen, bis keine Fundstelle mehr vorhanden Do pos = Text.IndexOf(Find, pos + 1, CompareType) If pos >= 0 Then count += 1 Loop Until pos < 0 ' Rückgabewert: Anzahl Fundstellen Return (count) End Function
Aufrufbeispiele:
Dim sText As String = "Test-Aufruf" ' Rückgabewert ist 2 MsgBox(StrCount(sText, "T")) ' Rückgabewert ist 1 MsgBox(StrCount(sText, "T", StringComparison.InvariantCulture) ' Rückgabewert ist 0 MsgBox(StrCount(sText, "h")) ' Rückgabewert ist -1 MsgBox(StrCount(sText, ""))
Dim sText As String = _ "Dieter Otter" & vbTab & "info@tools4vb.de" & vbTab & "www.vbarchiv.net" ' Rückgabewert ist 2 MsgBox(StrCount(sText, vbTab))