我想计算一个单词出现在文件中的次数。有一个简单的方法吗?
答案 0 :(得分:2)
如果文件是直接文本文件,则在c#...
中非常简单private static int GetWordCount(string fileName, string word)
{
string content = File.ReadAllText(fileName);
string[] words = content.Split(new char[] {'.', '.', ' ', '?', '\n', '\r'},
StringSplitOptions.RemoveEmptyEntries);
return words.Count(q => q == word);
}
此方法将文本读入字符串,然后根据某些分隔符拆分字符串。然后调用LINQ函数来获取和重新计算计数。
答案 1 :(得分:0)
static void Main(string[] args)
{
StreamReader oReader;
if (File.Exists(@"C:\TextFile.txt"))
{
Console.WriteLine("Enter a word to search");
string cSearforSomething = Console.ReadLine().Trim();
oReader = new StreamReader(@"C:\TextFile.txt");
string cColl = oReader.ReadToEnd();
string cCriteria = @"\b"+cSearforSomething+@"\b";
System.Text.RegularExpressions.Regex oRegex = new System.Text.RegularExpressions.Regex(cCriteria,RegexOptions.IgnoreCase);
int count = oRegex.Matches(cColl).Count;
Console.WriteLine(count.ToString());
}
Console.ReadLine();
}
OR
另一种方法。这可能有助于您更好地理解。
使用Collections / Generics概念,我们将轻松达到我们的标准。请检查以下代码并根据您的场景进行更新。
1。)最初读取文本文件(使用filestream
并导入IO
命名空间),
System.IO.StreamReader StreamReader1 =
new System.IO.StreamReader(Server.MapPath("test.txt"));
2。)附加到字符串构建器中。
StringBuilder sbData = new StringBuilder();
sbData.Append(StreamReader1.ReadToEnd());
3。)从StringBuilder
(空格,句号,问号,感叹号,撇号,新行)中分离单词
string[] arrDataCollection = sbData.ToString().Split(' ');
4.。)为SortedList
创建字典。
SortedList<int, string> slData = new SortedList<int, string>();
5.。)循环溢出数据并获取不同的集合。
for (int i = 0; i < Words.Length; i++)
{
slData.Add(i, arrDataCollection[i]);
}
6。)获取不同的单词,计算并保存到一个Hashtable
。
Hashtable htCollections = new Hashtable();
foreach (KeyValuePair<int, string> kvp in slData )
{
table.Add(kvp.Value, kvp.Key );
}
7。)最后根据我们的要求从Hashtable
过滤它,希望这对你有帮助。