Rubrik: Variablen/Strings | VB-Versionen: VB2008 | 15.01.10 |
Anzahl Wörter eines Textabsatzes zählen Eine kleine intelligente Funktion, welche die Anzahl aller Wörter eines kompletten Textabsatzes zählt. | ||
Autor: Dieter Otter | Bewertung: | Views: 9.577 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Die nachfolgende kleine Funktion analysiert einen Textabsatz und zählt alle darin vorhandenen Wörter. Hierbei werden nicht nur Leerzeichen als Worttrenner berücksichtigt, sondern natürlich auch Satzzeichen und Zeilenumbrüche (sonst könnte man ja einfach die Split-Funktion verwenden).
Die Liste der Satzzeichen kann natürlich beliebig erweitert werden. Mehrfach aufeinanderfolgende Satzzeichen werden ebenfalls korrekt berücksichtigt, so dass die Anzahl der Wörter in diesem Fall nicht fälschlicherweise hochgezählt wird.
''' <summary> ''' Zählt die Anzahl der Wörter eines Textabsatzes. ''' </summary> ''' <param name="Text">String, der den Text beinhaltet.</param> Public Function WordCount(ByVal Text As String) As Integer ' wenn Text leer ist If String.IsNullOrEmpty(Text) Then Return 0 End If ' Text in Byte-Array konvertieren Dim bytes() As Byte = System.Text.Encoding.Default.GetBytes(Text) ' Satzzeichen festlegen Dim chars() As Byte = System.Text.Encoding.Default.GetBytes( _ ",.;:!? " & Chr(13) & Chr(10)) Dim wCount As Integer = 1 Dim bFlag As Boolean = False ' Gesamtes Byte-Array durchlaufen und nach Satzzeichen suchen For i As Integer = 0 To bytes.Length - 1 If chars.Contains(bytes(i)) Then ' wenn es sich um ein Satzzeichen handelt... If Not bFlag Then bFlag = True If i > 0 Then wCount += 1 End If Else bFlag = False End If Next ' Wenn letztes Zeichen ein Satzzeichen war, ' Zähler wieder um eins verringern If bFlag Then wCount -= 1 Return wCount End Function