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

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

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

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

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

textual
Листинг программы
  1. using System;
  2.  
  3. namespace NETExperiments
  4. {
  5.     class myClass
  6.     {
  7.         enum WordCountState
  8.         {
  9.             Init,
  10.             Word,
  11.             WhiteSpace
  12.         }
  13.  
  14.         static int CountWords(string originString)
  15.         {
  16.             int wordCounter = 0;
  17.             WordCountState state = WordCountState.Init;
  18.  
  19.             foreach (Char c in originString) {
  20.                 // In case of whitespace
  21.                 if (Char.IsWhiteSpace(c)) {
  22.                     switch (state) {
  23.                         case WordCountState.Init:
  24.                         case WordCountState.Word:
  25.                             state = WordCountState.WhiteSpace;
  26.                             break;
  27.  
  28.                         case WordCountState.WhiteSpace:
  29.                             // ignore whitespace chars
  30.                             break;
  31.  
  32.                         default:
  33.                             throw new InvalidProgramException();
  34.                     }
  35.                 // In case of non-whitespace char
  36.                 } else {
  37.                     switch (state) {
  38.                         case WordCountState.Init:
  39.                         case WordCountState.WhiteSpace:
  40.                             // Incerement out counter if we met non-whitespace
  41.                             // char after whitespace (one or more)
  42.                             wordCounter++;
  43.                             state = WordCountState.Word;
  44.                             break;
  45.  
  46.                         case WordCountState.Word:
  47.                             // ignore all symbols in word
  48.                             break;
  49.  
  50.                         default:
  51.                             throw new InvalidProgramException();
  52.                     }
  53.                 }
  54.             }
  55.  
  56.             return wordCounter;
  57.         }
  58.  
  59.         static void Main(string[] args)
  60.         {
  61.             string str = "Hello from cyberforum and    have nice  day!";
  62.  
  63.             Console.WriteLine("We have {0} words", CountWords(str));
  64.  
  65.             Console.ReadKey();
  66.         }
  67.     }
  68. }

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


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

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

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы