我正在处理一个搜索输入文本文件(我选择的)的小代码。我正在创建一个搜索功能。到目前为止,我得到它显示文本文件中出现的搜索词的次数以及行号。我需要帮助找到最长的单词并显示它。另外,我想找到最常出现在文本文件中的单词以及显示单词。
感谢任何帮助,建议或建议。提前谢谢!
这是我的代码:(我还没有编写代码的其他部分。我需要帮助。)
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);
}
答案 0 :(得分:0)
首先,您需要对文档进行标记,然后找到一些方法将其拆分为标记。因此,定义单词的分隔符:空格,逗号,点等。
然后迭代所有标记并将它们存储在Dictionary
中,该单词将单词映射到它出现的次数。
然后你可以迭代地图,找到最多出现的单词和最长的单词。