Member 13336154 Ответов: 5

Как подсчитать количество слов в поле richtext


во-первых, я должен поместить текстовый файл в richtext box, а затем подсчитать количество слов в richtext в messagebox.Также найдите слово в текстовом файле, которое сравнивается со словом в текстовом поле.

Что я уже пробовал:

for(int count = 1; count < wordArray.Length ; count++)
            {
                count = count + 1;
            }
            
            MessageBox.Show("There are " + " " + count + " " + "words");

BillWoodruff

Начните с тщательного определения того, что такое слово. Является ли одна буква или цифра, окруженная пробелом, словом ? Является ли число словом ? Является ли вопросительный знак с пробелом до и после него словом ? Если есть # 25 экземпляров слова "и"... ты считаешь всех тнем ?

5 Ответов

Рейтинг:
2

Graeme_Grant

Есть много различных способов сделать это. Вот еще один:

int wordCount = Regex.Matches(myRichTextBox.Text, @"\b[A-Za-z0-9]+\b").Count;


RickZeeland

5D от меня, я проверил его на .NET Fiddle, незначительное ворчание: он тоже считает числа как слова. https://dotnetfiddle.net/5p0r60
Если вы не хотите этого использовать: "\b[A-Za-z]+\b"

Graeme_Grant

Спасибо. Может быть, это и мелочь, но MS Word также рассматривает числа как слова. ;)

RickZeeland

У-у-у, Мы же не хотим идти против стандартов, не так ли :)

Graeme_Grant

Ржунимагу! :)

Рейтинг:
2

Patrice T

Это бессмысленно и слишком сложно.

for(int count = 1; count < wordArray.Length ; count++)
{
    count = count + 1;
}

Считать слова в wordArray, вам просто нужно
count = wordArray.Length;


Используйте отладчик, чтобы увидеть, что делает ваш код.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
Отладка кода C# в Visual Studio-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
2

sreeyush sudhakaran

StreamReader inputFile = new StreamReader(@"C:\Users\T3328\Desktop\WordReader.txt");
string inputALLLines;

inputALLLines = inputFile.ReadToEnd();
rtxDisplay.Text = inputALLLines;


var line = inputALLLines;
var wordArray = Regex.Split(line, @"\W|_");

List<string> FinalWordArray = wordArray.ToList().FindAll(s => s.Length > 0);
int wordCount = FinalWordArray.Length


Рейтинг:
1

OriginalGriff

Почему вы зацикливаетесь, чтобы получить счет, который - по определению-равен длине, с которой вы начали?
Попробуй:

private char[] splitWordsBy = "\n .,:;\"'?!".ToArray();
...
int wordCount = myRichTextBox.Text.Split(splitWordsBy, StringSplitOptions.RemoveEmptyEntries).Length);


Graeme_Grant

private char[] splitWordsBy = " \n .,:;\"'?!".ToArray();

Вы предполагаете, что новые строки - это "\n". Что делать, если они вставляют текст с веб-страницы, то он может потерпеть неудачу, если исходный текст был из среды Mac, мобильных устройств или Linux. Окна "\р\н", Unix-это "\n" и Мак ОС "\Р". Лучше проверить и то, и другое, а также вкладку. ;)

private char[] splitWordsBy = " \r\n\t .,:;\"'?!".ToArray();

Рейтинг:
1

Member 12680324

попробуйте использовать

int count;
for(int i = 1; i < wordArray.Length ; i++)
{
    if(wordArray[i] != null && 
       wordArray[i] != String.Empty && 
       wordArray[i] != "/n"&& 
       wordArray[i] != "/t") 
       wordArray[i] != " ")
   {
     count++;
   }
}

MessageBox.Show("There are " + " " + count + " " + "words"); 


или
MessageBox.Show("There are " + " " + WordArray+ " " + "words");