我需要帮助显示一些东西

时间:2015-12-03 06:57:11

标签: c# file io

我正在处理一个搜索输入文本文件(我选择的)的小代码。我正在创建一个搜索功能。到目前为止,我得到它显示文本文件中出现的搜索词的次数以及行号。我需要帮助找到最长的单词并显示它。另外,我想找到最常出现在文本文件中的单词以及显示单词。

感谢任何帮助,建议或建议。提前谢谢!

这是我的代码:(我还没有编写代码的其他部分。我需要帮助。)

string line;
Console.WriteLine("Enter a word to search for: ");
string userText = Console.ReadLine();
int counter = 0;

string file = "NewTextFile.txt";
StreamReader myFile = new StreamReader(file);

int found = 0;

while ((line = myFile.ReadLine()) != null)
{
    counter++;
    if (line.Contains(userText))
    {
        Console.WriteLine("Found on line number: {0}", counter);
        found++;
    }
}
Console.WriteLine("A total of {0} occurences found", found);

我正在尝试使用正则表达式:

        var words = Regex.Matches(File.ReadAllText(file), @"\w+").Cast<Match>()
        .Select((m, pos) => new { Word = m.Value, Pos = pos })
        .GroupBy(s => s.Word, StringComparer.CurrentCultureIgnoreCase)
        .Select(g => new { Word = g.Key, PosInText = g.Select(z => z.Pos).ToList() })
        .ToList();


        foreach (var item in words)
        {
            Console.WriteLine("{0,-15} POS:{1}", item.Word, string.Join(",", item.PosInText));
        }


        for (int i = 0; i < words.Count; i++)
        {
            Console.Write("{0}:{1} ", i, words[i].PosInText.Count);
        } 

1 个答案:

答案 0 :(得分:0)

首先,您需要对文档进行标记,然后找到一些方法将其拆分为标记。因此,定义单词的分隔符:空格,逗号,点等。

然后迭代所有标记并将它们存储在Dictionary中,该单词将单词映射到它出现的次数。

然后你可以迭代地图,找到最多出现的单词和最长的单词。