c# - 从文本文件中读取并对行进行排序(每行 int + String)

标签 c# file archive bookmarks

我正在为一个类似于 Subway Surfers 的大学项目编写游戏。我的一切都工作正常,但我的问题出在我编码的书签选项上。

当您在游戏中失败时,您必须输入一个名称,该名称会以 <int score> <string name> 格式写入并保存在文本文件中。 ,例如:

11245 Lucas
10123 Marco
 2394 Ricky

然后在游戏菜单中,您可以选择书签,文本文件将被读取并显示在屏幕上,一个分数在另一个分数下,并带有每个游戏中写入的名称。

现在我的问题是我希望对书签进行排序,最高的在顶部,但我不知道如何做到这一点,因为我在每行中有一个 int 和一个字符串,并且它们是相关的,因此我可以没有一个分数文件和一个姓名文件,因此当我订购分数时,我丢失了有关谁获得每个分数的信息。

我该如何解决这个问题?

编辑: 我正在添加与我的问题相关的代码部分。 这是显示书签的方法

static void ReadBookmark()
        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("BOOKMARKS");
            string myfile = @"bookmarks.txt";
            if (File.Exists(myfile) == false)
            {
                Console.WriteLine("\n");
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("NO BOOKMARKS. PLAY SOME GAMES!");
                Console.Write("\nPRESS A KEY TO RETURN...");
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("\n");
                Console.ForegroundColor = ConsoleColor.Green;
                using (StreamReader sr = File.OpenText(myfile))
                {
                    string s = "";
                    while ((s = sr.ReadLine()) != null)
                    {
                        Console.WriteLine($"\t{s}");
                    }
                }
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("\n\nPRESS A KEY TO RETURN...");
                Console.ReadKey();
            }
        }

这是将名称和分数写入文件的代码。

public void SaveBookmark(int score, string name)
        {
            string myfile = @"bookmarks.txt";
            using (StreamWriter sw = File.AppendText(myfile))
            {
                sw.WriteLine($"{score} {name}");
            }
        }

最佳答案

您可以按空格分割每一行,然后使用 int.Parse 获取第一部分的数值,然后使用该值OrderByDescending:

var orderedLines = File.ReadLines(myfile)
    .OrderByDescending(line => int.Parse(line.Split()[0]))
    .ToList();

关于c# - 从文本文件中读取并对行进行排序(每行 int + String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62560386/

相关文章:

c# - "Input string was not in a correct format."C#

c# - 将一个文件从一个项目的输出目录复制到另一个项目的输出目录

javascript - 如何在另一个JavaScript文件中包含一个JavaScript文件?

c++ - 将整数写入二进制文件 C++ 的问题

ios - iCloud数据备份与恢复攻略

c# - 将普通电子邮件地址解析为两部分

c# - 我如何知道异步方法调用是否更改了调用者的上下文?

python - 从文件创建参数列表的列表

jakarta-ee - 打包存档和分解存档之间的区别

java - 在 zip 中写入(修改或添加)文件