2012-04-01 72 views
0

我需要使用visual C#将特殊html实体转换为其十进制值。首先,我需要加载.html文件,并且需要将所有特殊字符值替换为十进制值。使用visual C#将html实体转换为十进制值#

EX:‰---> “&#137”
®---> “&#174”
A ---> “&#197”

究竟什么是优化用十进制值替换所有字符的方法。我有超过1000个字符和实体的列表。

+0

我会假设并非所有元素都是特殊字符? '

100‰
'是1个Html元素,3个字符,1个特殊字符? – 2012-04-01 03:21:58

回答

1

假设你可以舒适地贴合你的HTML文件中StringBuilder,你可以采取几个不同的方法。首先,我假设你把所有存储在字典中你的角色替换的:

var replacements = new Dictionary<char,string> { 
    { '®', "&#137" }, 
    // ...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一次读取一个字节的文件。

+0

谢谢Ethan ..我认为流媒体阅读器是最好的 – Dakshika 2012-05-17 07:53:09

相关问题