Подсчёт количества слов в textBox - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите, пожалуйста, решить проблему! У меня есть textBox, в котором нужно посчитать количество слов введенного текста. Изначально не планировалось, что туда будут ручками вводить, при копировании куска текста всё нормально считается. Но когда начинаешь вводить сам, после первого пробела он начинает каждую букву считать как слово, пробел как два, нажатие Backspace вообще за 4 и т.д. Мне нужно разбить текст на отдельные слова, поэтому использую стринговый список all_words, в который заношу всё, что считается словами и количеством слов получаю как его Count. Я этот код повесил на событие TextChanged, нужно, чтобы оно при вводе постепенно наращивало список слов.
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string text = textBox1.Text;
            if (text == "")
                word_count_label.Text = "0";
            string temp = "";
            for(int i=0; i<text.Length; i++)
            {
                if (alph.Contains(text[i]))
                    temp += text[i];
                else
                {
                    if (temp.Length > 1 || temp == "я")
                    {
                        all_words.Add(temp);
                        temp = "";
                    }
                }
            }
            word_count_label.Text = Convert.ToString(all_words.Count);
        }
Помогите, пожалуйста) на всякий случай прикрепляю архив с проектом.

Решение задачи: «Подсчёт количества слов в textBox»

textual
Листинг программы
using System;
 
namespace NETExperiments
{
    class myClass
    {
        enum WordCountState
        {
            Init,
            Word,
            WhiteSpace
        }
 
        static int CountWords(string originString)
        {
            int wordCounter = 0;
            WordCountState state = WordCountState.Init;
 
            foreach (Char c in originString) {
                // In case of whitespace
                if (Char.IsWhiteSpace(c)) {
                    switch (state) {
                        case WordCountState.Init:
                        case WordCountState.Word:
                            state = WordCountState.WhiteSpace;
                            break;
 
                        case WordCountState.WhiteSpace:
                            // ignore whitespace chars
                            break;
 
                        default:
                            throw new InvalidProgramException();
                    }
                // In case of non-whitespace char
                } else {
                    switch (state) {
                        case WordCountState.Init:
                        case WordCountState.WhiteSpace:
                            // Incerement out counter if we met non-whitespace
                            // char after whitespace (one or more)
                            wordCounter++;
                            state = WordCountState.Word;
                            break;
 
                        case WordCountState.Word:
                            // ignore all symbols in word
                            break;
 
                        default:
                            throw new InvalidProgramException();
                    }
                }
            }
 
            return wordCounter;
        }
 
        static void Main(string[] args)
        {
            string str = "Hello from cyberforum and    have nice  day!";
 
            Console.WriteLine("We have {0} words", CountWords(str));
 
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы