Подсчёт количества слов в 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д