如何用用户输入替换文本文件中一行的一部分?

本文关键字:一行 一部分 用户 何用 输入 替换 文件 文本 | 更新日期: 2023-09-27 18:02:44

代码如下

private void SaveButton_Click(object sender, EventArgs e)
{
    string textBoxText = TextBox.Text;
    var lines = File.ReadAllLines(@"F:'Bioshock2SP.ini");
    foreach(string line in lines)
    {
        if (line.Contains("VoVolume="))
        {
            //This is where I get confused.
            string settingLine = line;
            string replaceline = (line.Replace(line, textBoxText));
            File.WriteAllText(@"F:'Bioshock2SP.ini", settingLine);
        }
        break;
    }
    MessageBox.Show("Setting saved!");
}

这个想法是替换我玩的游戏的Settings.ini文件中的一部分设置,使用我的表单中的文本框的用户输入。用户输入一个数字,例如"1.56",然后点击保存按钮,用他们的输入替换现有的行。在这个例子中,这个设置就是音量。

应用程序运行完全正常,但在点击保存并进入设置文件后,我的输入没有保存。

如何用用户输入替换文本文件中一行的一部分?

保存文件的方式应该有所改变。保存文件的每一行,如果需要的话进行编辑。

void SaveButton_Click(object sender, EventArgs e)
{
    var textBoxText = TextBox.Text;
    var lines = File.ReadAllLines(@"F:'Bioshock2SP.ini");
    using (var file = new StreamWriter(@"F:'Bioshock2SP.ini"))
    foreach(string line in lines)
    {
        if (line.Contains("VoVolume="))
            file.WriteLine(line.Substring(0, 9) + textBoxText); // Writes something like 'VoVolume=1.56'
        else file.WriteLine(line); // No editing required
    }
    MessageBox.Show("Setting saved!");
}

我认为你的代码有几个单独的问题:

  1. 替换函数

    string replaceline = (line.Replace(line, textBoxText));
    

    Replace接受要查找的字符串和要替换它的字符串。你的第一个参数是'line',所以它会用textBoxText中的值替换整行。我假设您只想用该值替换该行的一部分。在这种情况下,您需要使用类似line.Replace(searchString, textBoxText)的东西,其中您先前已将searchString定义为要替换的文本。如果你不知道这个值是什么,但是有一个模式,你可能想看看使用正则表达式,它可以让你定义一个模式来搜索和替换。

  2. WriteAllText函数
    File.WriteAllText(@"F:'Bioshock2SP.ini", settingLine);
    

    这一行将用settingLine中的值替换BioShock2SP.ini的全部内容。这里有两个问题。

    1. 一个是settingLine是在你做替换之前保存的值-所以它没有包括你的替换操作的结果。您应该使用replaceline(假设它已被正确修改)。
    2. 即使你这样做了,另一个是那个文件。WriteAllText将用settingLine中的值替换整个文件-这可能不是您想要的。您最好修改数组中的行并使用File.WriteAllLines重新输出整个数组-假设文件中有多行。

上面的提示可能会帮助你解决这个问题,但要正确回答这个问题,我需要看到一个文件的样例,以及你想要替换的模式。