Frage von Tedd0n, 28

C# Wörter in einer Textbox zählen?

Ich möchte in einem Windows Forms - Projekt die Wörter in einer Textbox zählen. (Verwendet wird Visual Studio).

Dazu habe ich eine Multiline-Texbox, in die ein Text eingegeben werden kann.

Nach Klick auf einen Button soll die Anzahl der Wörter in einer weiteren Textbox angezeigt werden.

Ich will die Methode IsWhiteSpace() der Struktur char verwenden, leider komme ich aber nicht zu korrekten Ergebnissen.

Ich hoffe es kann mir hier jemand weiterhelfen :)

Antwort
von TraugottM, 15

Versuch's mal so. Die erste Zeile hat den Sinn, erstmal alle Zeilenumbrüche durch Whitespace zu ersetzen. Die zweite Zeile teilt den Text an jedem Leerzeichen auf. Die dritte Zeile gibt die Anzahl der Elemente im Array zurück. Ein bisschen musst du aber noch an den Code ran: Was ist z.B. bei zwei oder mehr Leerzeichen nacheinander? Am besten nochmal mit ner while-Schleife oder so, so lange "  " (= zwei aufeinanderfolgende Leerzeichen) durch " "(= einzelnes Leerzeichen) ersetzen, bis keine zwei aufeinanderfolgenden Leerzeichen mehr gefunden werden.

private int countWords(){
var words = this.textBox1.Text.Replace(Environment.NewLine," ");
var countArray = words.Split(' ');
return countArray.Length;
}
Antwort
von triopasi, 21

Wieso kommst du denn nicht zum korrekten Ergebnis? Wie sieht dein Code bisher aus? Wie sollen wir dir helfen, ohne das zu wissen??

Kommentar von Tedd0n ,

Das ist die Click-Methode des Buttons:



private void bnAnzahlWoerter_Click(object sender, EventArgs e)
{
int iAnzahlWörter = 0;

//Speichern der einzelnen Zeilen in der Variablen sLine
for (int i = 0; i < tbEingabe.Lines[i].Length; i++)
{
string sLine = tbEingabe.Lines[i];
char cZeichen;

for (int j = 0; j < sLine.Length; j++)
{
cZeichen = sLine[j];

if (char.IsWhiteSpace(cZeichen))
{
iAnzahlWörter++;
}
}


}
tbAnzahlWoerter.Text = iAnzahlWörter.ToString();
}
Kommentar von triopasi ,

Und was is der Fehler? Wird zu viel / zu wenig gezählt? Haste mal mit dem Debugger geschaut, wo denn falsch gezählt wird?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten