c# - C#编辑文本文件中特定行上的现有值
问题描述
我正在制作一个小游戏,但无法将游戏结果保存到文本文件中。我尝试只阅读所需的行,但收效甚微:
List<string> 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);
}
Update 方法将读取字符串,根据分隔符 (":") 对其进行拆分,然后更新数字部分。一起使用常量和通用更新方法将允许您以与 Wins 相同的方式更新 Losses 和 Draws(并且可能比直接使用 1/2/3 索引更具可读性)。
str[LossesPosition] = Update(str[LossesPosition]);
str[Draws] = Update(str[Draws]);
话虽如此,如果您可以选择更改文件的格式,我建议您选择 Json 或 Xml。这将是比使用当前格式更好的方法。
推荐阅读
- geoip - Matomo 中的 GeoIP,之前的 Piwik 地图东京区
- objective-c - 如何在 LZip 的 NSTask 参数中传递源和目标路径?
- php - 如何在 php 中调用表 AVG()
- python - 监控文件夹中添加的 .jpg,使用 CUPS 自动打印,将相同的 .jpg 移动到另一个文件夹
- javascript - 为什么我的幻灯片在我的 React 应用程序中不起作用?
- javascript - React Redux:与示例 A 代码完美配合,但在示例 B 代码中返回调度错误
- python - 地图地形分析:numpy.roll 函数的替代方案?
- php - 在 laravel 中更改时区
- microsoft-cognitive - 认知服务语音 SDK 是否在非 ubuntu linux 中工作?如果是这样,所需的依赖项是什么?
- nix - 安装后找不到 nix-env 和 nix-build (debian buster)