我需要使用c#製作頻率分析控制檯程序。它必須顯示文本文件中最常用的10個字母。我設法顯示程序讀取的前10個字母以及每個字符的頻率。然而,我不知道如何對字典進行排序。這是迄今爲止的代碼。如何在C#中對字典進行排序.net
我還必須爲用戶提供在區分大小寫的情況下進行頻率分析的選項(與現在一樣)並且不區分大小寫。這個問題的幫助也將不勝感激。謝謝!
static void Main(string[] args)
{
// 1.
// Array to store frequencies.
int[] c = new int[(int)char.MaxValue];
// 2.
// Read entire text file.
// string root = Server.MapPath("~");
// string FileName = root + "/App_Data/text.txt";
//string s = File.ReadAllText(FileName);
foreach (string line in File.ReadLines(@"c:\Users\user\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\App_Data\text.txt", Encoding.UTF8)) {
var fileStream = new FileStream(@"c:\Users\user\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\App_Data\text.txt", FileMode.Open, FileAccess.Read);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
string line2;
while ((line2 = streamReader.ReadLine()) != null)
{
// process the line
// 3.
// Iterate over each character.
foreach (char t in line)
{
// Increment table.
c[(int)t]++;
}
// 4.
// Write all letters found.
int counter = 0;
for (int i = 0; i < (int)char.MaxValue; i++)
{
if (c[i] > 0 && counter < 11 &&
char.IsLetterOrDigit((char)i))
{
++counter;
Console.WriteLine("Letter: {0} Frequency: {1}",
(char)i,
c[i]);
}
}
}
}
Console.ReadLine();
}
}
https://www.dotnetperls.com/sort-dictionary查看此鏈接! – Sameer
你不能排序'Dictionary'。沒有秩序的概念。你可以做的是將字典轉換爲List/Enumerable並對其進行排序,如@aquinas已完成。 –