jaramh Ответов: 5

Подсчет количества слов в текстовом файле


Мне нужен код на C# или C для подсчета количества слов в текстовом файле. У меня есть более 5000 текстовых файлов.
Спасибо

Sandeep Mewara

- Я хочу...-... хорошо. Мы это поняли. А теперь расскажите нам, что вы пробовали? Покажите нам ваши усилия...

DaveAuld

Уникальные слова или общее количество слов в файле? О, подождите ... это заходит слишком далеко, думаю, мы должны начать с того, что вы что-нибудь пробовали? Начните с открытия файла, затем чтения в файловом потоке, а затем разбора содержимого...................

5 Ответов

Рейтинг:
28

#realJSOP

Вот - попробуй это.

public string ReadTextFile(string filename)
    {
        StreamReader re = File.OpenText(filename);
        string result = "";
        string input = "";
        try
        {
            while ((input = re.ReadLine()) != null)
            {
                Thread.Sleep(5000);
                for (int i = 0; i < input.Length; i++)
                {
                    result += input[i];
                    Thread.Sleep(2500);
                }
            }
        }
        catch (Exception ex)
        {
            // do something here.
        }
        finally
        {
            if (re != null)
            {
                Thread.Sleep(2500);
                re.close;
            }
            re = null;
        }
    }
private int CountWords(string filename, string text)
{
    int wordCount = 0;
    try
    {
        for (int i = 0; i < text.Length; i++)
        {
            if (text[i] == ' ' || text[i] == '\i')
            {
                Thread.Sleep(500);
                wordCount++;
                if (wordCount > 1)
                {
                    Thread.Sleep(500);
                    ReadTextFile(filename);
                }
            }
        }
    }
    catch (Exception ex)
    {
        // do something here
    }
    return wordCount;
}


jaramh

спасибо

Hans Dietrich

Боже. Единственный ответ с кодом, и вы получили 3'd.

#realJSOP

Что ж, возможно, это было заслуженно. Я намеренно написал код, который будет занимать много времени для выполнения, и будет обрабатывать один и тот же файл снова и снова. :)

Рейтинг:
1

Sanjib Panigrahi

классная программа
{
static void Main(string[] args)
{
string filePath = "D:/Test.text";//вставьте сюда путь к текстовому файлу
Файлового потока ФС = новый хранилище FileStream(путь к файлу, содержит filemode.Открыть);
StreamReader sr = новый StreamReader(fs);
содержимое строки = СР.ReadToEnd();
содержание=содержание.Заменить("\r\n","\r");
int charCount = содержимое.Длина;
int lineCount=содержимое.Split('\r').Длина;
содержание = содержание.Заменить('\r', ' ');
int WordsCount = содержимое.Расщеплять(' ').Длина;

}
}


Рейтинг:
0

#realJSOP

Это легко сделать. Действительно. Просто будь программистом и пиши его.


Рейтинг:
0

jobormo

string[] source = descripicion.Сплит(новый символ[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries);

int total_words = источник.Рассчитывать();


Karthik_Mahalingam

5, Хороший ответ, тоже простой.

Рейтинг:
0

Member 14176736

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace CodingAlgorithms
{
    //Count the number of words in a string (Needs to handle multiple spaces between words)
    public static class WordCount
    {
        public static int Count(string x)
        {
            int result = 0;
 
            //Trim whitespace from beginning and end of string
            x = x.Trim();
 
            //Necessary because foreach will execute once with empty string returning 1
            if (x == "")
                return 0;
 
            //Ensure there is only one space between each word in the passed string
            while (x.Contains("  "))
                x = x.Replace("  ", " ");
 
            //Count the words
            foreach (string y in x.Split(' '))
                result++;
 
            return result;
        }
    }
}


CHill60

Что делать, если в файле есть предложения, заканчивающиеся точкой? Или вопросительный знак,или восклицательный знак! Что делать, если есть список, разделенный запятыми или точками с запятой?

Ваш код вернет неверное количество слов для приведенного выше комментария (на 2 меньше фактического числа).

Но на самом деле это просто гораздо более длинная версия решения 3 - за исключением того, что вы не используете опцию split для удаления пустых значений, которые приведут к нескольким пробелам, а затем вы фактически перебираете возвращаемые значения, чтобы подсчитать их, вместо того чтобы использовать действительно удобное свойство строкового массива … Рассчитывать. Эти методы были примерно 9 лет назад, когда был задан вопрос, ваше решение выглядит так, как будто оно было написано для VB6!