0

我正在使用 StreamReader 读取文本文件并执行 Regex.Match 以查找特定信息,现在当我找到它时,我想用 Regex.Replace 替换它,并且我想将此替换写回文件。

这是我文件中的文本:

/// 
/// <Command Name="Press_Button"  Comment="Press button" Security="Security1">
/// 
/// <Command Name="Create_Button"  Comment="Create button" Security="Security3">
/// ... lots of other Commands 

现在我需要在 Create_Button 命令中找到: Security="Security3"> ,将其更改为 Security="Security2"> 并将其写回文件

do { 
    // read line by line 
    string ReadLine = InfoStreamReader.ReadLine();

    if (ReadLine.Contains("<Command Name"))
     {
         // now I need to find Security1, replace it with Security2 and write back to the file
     }
   }
while (!InfoStreamReader.EndOfStream);

欢迎任何想法......

已编辑: 良好的调用来自 tnw 逐行读取和写入文件。需要一个例子。

4

1 回答 1

3

我会做更多这样的事情。您不能像您在那里描述的那样直接写入文件中的一行。

这不使用正则表达式,但完成了同样的事情。

var fileContents = System.IO.File.ReadAllText(@"<File Path>");

fileContents = fileContents.Replace("Security1", "Security2"); 

System.IO.File.WriteAllText(@"<File Path>", fileContents);

几乎直接从这里拉出来:c#replace string within file

或者,您可以循环并逐行读取文件并将其逐行写入新文件。对于每一行,您可以检查Security1、替换它,然后将其写入新文件。

例如:

StringBuilder newFile = new StringBuilder();

string temp = "";

string[] file = File.ReadAllLines(@"<File Path>");

foreach (string line in file)
{
    if (line.Contains("Security1"))
    {

    temp = line.Replace("Security1", "Security2");

    newFile.Append(temp + "\r\n");

    continue;

    }

newFile.Append(line + "\r\n");

}

File.WriteAllText(@"<File Path>", newFile.ToString());

来源:如何使用 c# 从文本文件中编辑一行

于 2013-04-19T18:01:08.133 回答