テキスト ファイルの読み取り/書き込みを行うスコア システムを作成しています。私の現在の形式は、ファイルの各行を読み取り、各行をList<string>
. 典型的な行は次のようになります50:James (50 being the score, James being the username)
。
文字列で名前を保持しながら、スコアでリストを並べ替える必要があります。これが私が意味することの例です:
順序付けられていないテキスト ファイル:
50:James
23:Jessica
70:Ricky
70:Dodger
50:Eric
(同じスコアがいくつかあることに注意してください。これは、数値キーを使用してリストを作成する私の使用を妨げています)
順序付きリスト:
70:Dodger
70:Ricky
50:Eric
50:James
23:Jessica
現在のコード (2 つ以上の同じスコアでは機能しません)
Dictionary<int, string> scoreLines = new Dictionary<int, string>();
if (!File.Exists(scorePath))
{
File.WriteAllText(scorePath, "No Scores", System.Text.Encoding.ASCII);
}
StreamReader streamReader = new StreamReader(resourcePath + "\\scoreboard.txt");
int failedLines = 0;
while (failedLines < 3)
{
string line = streamReader.ReadLine();
if (String.IsNullOrEmpty(line))
{
failedLines++;
continue;
}
scoreLines.Add(int.Parse(line.Split(':')[0]), line.Split(':')[1]);
}
var arr = scoreLines.Keys.ToArray();
arr = (from a in arr orderby a descending select a).ToArray();
List<string> sortedScoreLines = new List<string>();
foreach (int keyNum in arr)
{
sortedScoreLines.Add(keyNum + ":" + scoreLines[keyNum]);
}
return sortedScoreLines;
はい、私はこれが非常に非効率的で醜いことを知っていますが、私は非常に多くの異なる方法を試すのに何年も費やしました.