查找并替换字符串跨越的多行

时间:2017-12-14 18:03:21

标签: c# regex replace

我有一个文件,我需要找到一个特定的字符串并用另一个字符串替换它。该文件由外部系统创建或提交给我们。提交的文件每行有80个字符。如果文本文件中的单词不适合一行,则将其拆分为第一行末尾由=符号分隔的2行。在下面的示例中,SAMPLE STRING分为2行,SAM =在第一行,PLE STRING在第二行。下面给出一个例子

Line 1 text goes here SAM= PLE STRING and the other texts of the file.

现在我需要查找是否存在SAMPLE STRING,然后替换为其他一些示例字符串。我在C#中编写了下面的代码,但如果跨越多行则无法找到该字符串。请帮忙。

string filecontents = System.IO.File.ReadAllText("c:\\mytext.txt");
if(filecontents.Contains("SAMPLE STRING")) 
{
     filecontents = filecontents.Replace("SAMPLE STRING", "SOME_OTHER_STRING");
}

1 个答案:

答案 0 :(得分:1)

string filecontents = File.ReadAllText("c:\\mytext.txt");

// rebuild the splitted strings
filecontents = filecontents.Replace("=" + System.Environment.NewLine, "");

// remove line breaks from text
filecontents = filecontents.Replace(System.Environment.NewLine, " ");

// no need to use the Contains check, use a straightforward replacement (it will do nothing if the string is not present)
filecontents = filecontents.Replace("SAMPLE STRING", "SOME_OTHER_STRING");

完成此操作后,使用相同的条件将文本重新分成多行。由于替换样本的字符串具有不同的长度,如果不使用此方法(或等效方法)执行替换,则最终会将文本拆分为不等长的行。