我需要使用visual C#将特殊html实体转换为其十进制值。首先,我需要加载.html文件,并且需要将所有特殊字符值替换为十进制值。使用visual C#将html实体转换为十进制值#
EX:‰---> “&#137”
®---> “&#174”
A ---> “&#197”
究竟什么是优化用十进制值替换所有字符的方法。我有超过1000个字符和实体的列表。
我需要使用visual C#将特殊html实体转换为其十进制值。首先,我需要加载.html文件,并且需要将所有特殊字符值替换为十进制值。使用visual C#将html实体转换为十进制值#
EX:‰---> “&#137”
®---> “&#174”
A ---> “&#197”
究竟什么是优化用十进制值替换所有字符的方法。我有超过1000个字符和实体的列表。
假设你可以舒适地贴合你的HTML文件中StringBuilder
,你可以采取几个不同的方法。首先,我假设你把所有存储在字典中你的角色替换的:
var replacements = new Dictionary<char,string> {
{ '®', "‰" },
// ...etc
}
首先,阅读你的文件转换成StringBuilder
:
var html = new StringBuilder(File.ReadAllText(filename));
第一种方法是,你可以使用StringBuilder.Replace(string,string)
:
foreach(var c in replacements.Keys) {
html.Replace(c.ToString(), replacements[c]);
}
第二种方法是要经过的每一个字符的文件,看看是否需要更换(请注意,我们开始backwar从文件末尾开始;如果我们去向前,我们会不断地需要修改我们的索引值,因为我们增加长度的文件):
for(int i=html.Length-1; i>0; i--) {
var c = html[i];
if(replacements.ContainsKey(c)) {
html.Remove(i, 1);
html.Insert(i, replacements[c]);
}
}
很难说哪个会更有效,而不对实现中或者有细节的StringBuilder.Replace(string,string)
或做一些分析,但我会留给你。
如果将整个HTML文件加载到StringBuilder
是不可行的,则可以使用第二种技术的变体,StreamReader
一次读取一个字节的文件。
谢谢Ethan ..我认为流媒体阅读器是最好的 – Dakshika 2012-05-17 07:53:09
我会假设并非所有元素都是特殊字符? '