C#编辑文本文件中特定行上的现有值

C#编辑文本文件中特定行上的现有值,c#,streamreader,streamwriter,C#,Streamreader,Streamwriter,我正在制作一个小游戏,但在将游戏结果保存到文本文件时遇到了问题。 我试着只读需要的一行,但收效甚微: List a=File.ReadLines(path).Skip(2).Take(2).ToList(); 文本文件内有4行: PlayerTag Wins: 0 Losses: 0 Draws: 0 玩家获胜后,我希望增加1的胜利数量 理想的方法是什么?使用当前格式,您可以执行以下操作 var str = File.ReadAllLines(filePath); str[WinPositi

我正在制作一个小游戏,但在将游戏结果保存到文本文件时遇到了问题。 我试着只读需要的一行,但收效甚微:

List a=File.ReadLines(path).Skip(2).Take(2).ToList();
文本文件内有4行:

PlayerTag
Wins: 0
Losses: 0
Draws: 0
玩家获胜后,我希望增加1的胜利数量


理想的方法是什么?

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

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);
}
更新定义为

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相同的方式更新损失和平局(并且可能比直接使用1/2/3索引更具可读性)


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

读取所有行,更改要更改的行,然后将所有行写入文本文件?读取整个文件,反序列化、更新、序列化并保存
var lines=file.ReadAllLines(path);int oldWins=int.Parse(第[1]行)。拆分(“:”[1]);oldWins+=1;行[1]=“Wins:+oldWins.ToString();File.writeAllines(路径、行)我建议您查看JSON序列化/反序列化。比解析你自己的文本文件容易多了。编写一个简单的自定义类来封装玩家得分历史记录,然后使用。