C#-查找并替换文件中的特定字符串

时间:2019-08-09 08:39:20

标签: c# string visual-studio-2019

明智的社区! 我可能会在很简单的情况下再次向您寻求帮助。

所以。 我有一些带有文本行的文件(.ini文件)。文件示例:

[SomeGuy]
Name = Alex;
Surname = Newbie;
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com
Visits = 0;
...

我正在寻找以下解决方案: 1)替换:

EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com

EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=NewEmail

2)或删除:

EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com

并适合其位置:

EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=NewEmail

“ NewEmail”在哪里-是从用户输入中获取的新变量值。

我在这里搜索了一些解决方案,找到了一些并在本示例中应用了

string IniFile = @"S:\My.ini";
    var fileStrings = File.ReadAllLines(IniFile).ToList();

    for (var i = fileStrings.Count - 1; i >= 0; i--)
    {
        if (fileStrings[i].StartsWith("EMails"))
        fileStrings.RemoveAt(i);
    }

string NewEmail = "EMails = \"-mails=@mail1@somemail.com;@mail2@somemail.com;\" -MainEmail"+EMailField.Text;
File.AppendText(IniFile).Write(NewEmail);
File.WriteAllLines(IniFile, fileStrings);

EMailField是用户输入字段,我从中输入值(EMailField.Text)。

在此示例中,输入后出现错误: System.IO.IOException:该进程无法访问文件'S:\ My.ini',因为它正在被另一个进程使用。

但是它没有打开,使用或其他。 我还尝试通过应用以下方法将所有行从原始文件写入另一文件:

string NewIniFile = @"S:\MyNew.ini";
...
File.WriteAllLines(NewIniFile, fileStrings);

但是再次出现相同的错误-“ ...的S:\ My.ini'正在被另一个进程使用。”

使用Visual Studio 2019并创建Windows窗体应用程序。

请戳我一下我在做什么错

0 个答案:

没有答案