Console.WriteLine("What name would you like to be known as?");
string usernameforscore = Console.ReadLine();
int classicscore = 0;
string path = "";
File.AppendAllText(path, (usernameforscore + " " + classicscore + Environment.NewLine));
因此从本质上讲,这将在文件的每一行中依次写上名称和分数,我想添加某种形式的验证,以检查是否有人输入的用户名在文件中,然后将新行覆盖整个行用户名和分数数据。
“ classicsscore”引用用户的分数,该分数以前存储为整数。然后将其与该人的输入字符串用户名即“ John 12”一起放入文本文件中。我想要的是,如果一个人输入John作为其用户名(分数为400),那么该行将被替换为“ John 400”,而不会影响文本文件的其余部分。
我正在使用Visual Studio,C#控制台程序。
很抱歉,如果这是重复的话,我自己找不到特定答案。
答案 0 :(得分:1)
我认为这样的事情应该对您有用。
public void AddOrUpdate(string userName, int score)
{
string path = "";
var newLine = userName + " " + score;
var lines = File.ReadAllLines(path);
var wasUpdated = false;
using (var writer = new StreamWriter(path))
{
foreach (var line in lines)
{
var foundUserName = line.Substring(0, line.LastIndexOf(' '));
if (foundUserName == userName)
{
writer.WriteLine(newLine);
wasUpdated = true;
}
else
writer.WriteLine(line);
}
if(!wasUpdated)
writer.WriteLine(newLine);
}
}
但是除非您出于某种原因需要这种特定格式,否则使用数据库将是更好的选择。