【发布时间】:2014-05-20 12:22:48
【问题描述】:
我正在开发一个小测试程序来试验文本文件并在其中存储一些数据,并且在尝试替换特定行中的值时偶然发现了一个问题。
这就是我的文本文件的格式化方式:
user1, 1500, 1
user2, 1700, 17
..等等。
这是我目前用来逐行读取文件的代码:
string line;
Streamreader sr = new Streamreader(path);
while ((line = sr.ReadLine()) != null)
{
string[] infos = line.Split(',');
if (infos[0] == username) //the username is received as a parameter (not shown)
//This is where I'd like to change the value
}
基本上,我的目标是仅在用户名匹配时更新点数(文本行中的第二个值 - infos[1])。我尝试使用以下代码(已编辑以匹配我的信息)
string text = File.ReadAllText("test.txt");
text = text.Replace("some text", "new value");
File.WriteAllText("test.txt", text);</pre>
这样做的问题是它将替换文本文件中的每个对应值,而不仅仅是正确的行之一(由匹配的用户名指定)。我知道如何更改 infos[1] 的值(例如:user1 为 1500),但我不知道之后如何将其重写到文件中。
我已经在网上和 StackOverflow 上进行了搜索,但我找不到任何关于这个特定问题的东西,其中值只有在正确的行上才能被修改 - 而不是文本中的任何地方。
我没有关于如何做到这一点的想法,我非常感谢一些建议。
非常感谢您的帮助。
【问题讨论】:
-
您可以使用
ReadAllLines获取字符串列表,按照您当前的操作遍历它们,然后将它们写回(string.Join和Environment.NewLine,然后只需WriteAllText)