首页 > 解决方案 > C#编辑文本文件中特定行上的现有值

问题描述

我正在制作一个小游戏,但无法将游戏结果保存到文本文件中。我尝试只阅读所需的行,但收效甚微:

List<string> a = File.ReadLines(path).Skip(2).Take(2).ToList();

文本文件里面有 4 行:

PlayerTag
Wins: 0
Losses: 0
Draws: 0

玩家获胜后,我想将获胜次数增加 1。

这样做的理想方法是什么?

标签: c#streamreaderstreamwriter

解决方案


使用当前格式,您可以执行以下操作。

var str = File.ReadAllLines(filePath);
str[WinPosition] = Update(str[WinPosition]);
File.WriteAllLines(filePath);

其中 WinPosition 是一个常量,定义为

const int WinPosition = 1;
const int LossesPosition = 2;
const int DrawsPosition = 3;

更新定义为

private string Update(string source)
{
    var data = source.Split(':');
    data[1] = (Int32.Parse(data[1])+1).ToString();
    return string.Join(":",data);
}

Update 方法将读取字符串,根据分隔符 (":") 对其进行拆分,然后更新数字部分。一起使用常量和通用更新方法将允许您以与 Wins 相同的方式更新 Losses 和 Draws(并且可能比直接使用 1/2/3 索引更具可读性)。

str[LossesPosition] = Update(str[LossesPosition]);
str[Draws] = Update(str[Draws]);

话虽如此,如果您可以选择更改文件的格式,我建议您选择 Json 或 Xml。这将是比使用当前格式更好的方法。


推荐阅读