c#:替换一行文本中的字符串
本文关键字:文本 一行 字符串 替换 | 更新日期: 2023-09-27 18:07:43
我试图替换几个文件中的特定字符串。这些文件是从一个特定的源读取的。我想要的是逐行读取这些文件,在每行中找到我想要的字符串,并用其他字符串替换它们。
到目前为止,我已经想到了这个。这是工作的,但问题是下面的代码是,它是非常非常慢。我得出的结论是,这是因为我做它的方式加载所有的文本在内存中,并写入所有的一次。现在我怎么一行一行地做呢?
static void Main()
{
const string dir_source = "d:''myfiles";
var files = Directory.GetFiles(dir_source, "*", SearchOption.AllDirectories);
foreach (var file in files)
{
var extension = Path.GetExtension(file);
var str_old = "Google";
var str_new = "Alphabet";
if (extension == ".cs" || extension == ".xaml")
{
File.WriteAllText(file,
File.ReadAllText(file)
.Replace(str_old , str_new));
}
}
Console.WriteLine("Completed");
Console.ReadKey();
}
这个SO问题与您想要做的事情类似,并且是逐行操作的。
可接受的答案对文件行级别的替换使用此方法:
File.WriteAllLines(outputFile,
File.ReadLines(inputFile)
.Select(t => t.Replace(str_old , str_new)));
此外,您可能需要考虑使用Parallel。