Mat*_*ias 79
可以在一行中完成:
File.WriteAllText("Path", Regex.Replace(File.ReadAllText("Path"), "[Pattern]", "Replacement"));
Run Code Online (Sandbox Code Playgroud)
Zom*_*eep 28
如果您正在阅读大文件,并且您要替换的字符串可能不会在多行中出现,我会建议如下所示...
private static void ReplaceTextInFile(string originalFile, string outputFile, string searchTerm, string replaceTerm)
{
string tempLineValue;
using (FileStream inputStream = File.OpenRead(originalFile) )
{
using (StreamReader inputReader = new StreamReader(inputStream))
{
using (StreamWriter outputWriter = File.AppendText(outputFile))
{
while(null != (tempLineValue = inputReader.ReadLine()))
{
outputWriter.WriteLine(tempLineValue.Replace(searchTerm,replaceTerm));
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你必须删除原始文件,并将新文件重命名为原始文件,但这是微不足道的 - 就像在方法中添加一些基本的错误检查一样.
当然,如果您的替换文本可能跨越两行或更多行,您将不得不做更多的工作,但我会留给您解决.:)
Dan*_*ott 10
using System;
using System.IO;
using System.Text.RegularExpressions;
public static void ReplaceInFile(
string filePath, string searchText, string replaceText )
{
var content = string.Empty;
using (StreamReader reader = new StreamReader( filePath ))
{
content = reader.ReadToEnd();
reader.Close();
}
content = Regex.Replace( content, searchText, replaceText );
using (StreamWriter writer = new StreamWriter( filePath ))
{
writer.Write( content );
writer.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
Neo*_*Neo 10
对建议的答案略有改进,不需要正则表达式,并且符合问题的要求:
File.WriteAllText("Path", File.ReadAllText("Path").Replace("SearchString", "Replacement"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76416 次 |
| 最近记录: |