Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 24.09.01 |
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: 20.144 |
www.tools4vb.de | System: Win9x, WinNT, 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).
Public Function CountWords(ByVal sText As String) As Long ' Zählt die Anzahl Wörter eines Textabsatzes Dim Satzzeichen As String Dim nCount As Long Dim I As Long Dim bFlag As Boolean Dim sChar As String Satzzeichen = ",.;:!? " + Chr$(13) + Chr$(10) ' Enthält der Text überhaupt Zeichen? If Len(sText) > 0 Then nCount = 1: bFlag = False ' Gesamten Text, Zeichen für Zeichen prüfen For I = 1 To Len(sText) sChar = Mid$(sText, I, 1) ' Aktuelles Zeichen = Satzzeichen ? If InStr(Satzzeichen, sChar) > 0 Then If Not bFlag Then bFlag = True nCount = nCount + 1 End If Else bFlag = False End If Next I ' Wenn letztes Zeichen ein Satzzeichen war, ' Zähler wieder um eins verringern If bFlag Then nCount = nCount - 1 End If CountWords = nCount End Function
Ein paar Erläuterungen
Zunächst werden in der Variable Satzzeichen alle Zeichen festgelegt, durch welche zwei Wörter voneinander getrennt werden. Sollte heir Ihrer Meinung nach das ein oder andere Zeichen noch fehlen, so fügen Sie dieses einfach noch hinzu. Nun wird der Text Zeichen für Zeichen durchlaufen, wobei jedesmal geprüft wird, ob es sich bei dem aktuellen Zeichen um ein Zeichen aus Satzzeichen handelt. Ist dies der Fall, wird der Zähler um eins erhöht.
Damit der Wortzähler nicht bei mehreren aufeinaderfolgenden Satzzeichen mehrfach (und natürlich fälschlicherweise) hochgezählt wird, wird bFlag = True gesetzt. Dies signalisiert, dass es sich beim zuletzt geprüften Zeichen um ein Satzzeichen handelte. Der Wortzähler wird demnach immer nur dann um eins erhöht, wenn ein Satzzeichen gefunden wurde und bFlag = False ist.
Irgendwie ein klein wenig intelligent - meinen Sie nicht auch?