我想用另一个HTML文件中的文本替换HTML文件中某个范围内的文本(如位置1000到200000)。有人可以推荐我最好的方法吗?
答案 0 :(得分:5)
Pieter的方式可行,但确实涉及将整个文件加载到内存中。这可能没问题,但如果您有特别大的文件,您可能需要考虑另一种选择:
TextReader
TextWriter
Read
/ Write
,使用8K字符的缓冲区复制文本块,直到您读取初始数量(示例中为1000个字符)基本上它只是大量的复制操作,包括一个“副本”,它不会去任何地方(用于跳过原始文件中的文本)。
答案 1 :(得分:1)
试试这个:
string input = File.ReadAllText("<< input HTML file >>");
string replacement = File.ReadAllText("<< replacement HTML file >>");
int startIndex = 1000;
int endIndex = 200000;
var sb = new StringBuilder(
input.Length - (endIndex - startIndex) + replacement.Length
);
sb.Append(input.Substring(0, startIndex));
sb.Append(replacement);
sb.Append(input.Substring(endIndex));
string output = sb.ToString();
答案 2 :(得分:-1)
替换代码Pieter发布了这项工作,使用具有已知结果长度的StringBuilder是一种节省性能的聪明方法。
应该按照您的要求进行操作,但有时在处理结构化数据(如html)时,最好将其加载为XML(我已使用HtmlAgilityPack)。然后,您可以使用XPath查找要替换的节点,并使用它。它可能会更慢,但正如我所说,你可以使用该结构。