使用visual C#将html实体转换为十进制值
本文关键字:转换 十进制 实体 html visual 使用 | 更新日期: 2023-09-27 18:29:35
我需要使用visual C#将特殊的html实体转换为其十进制值。首先,我需要加载.html文件,并需要将所有特殊字符值替换为十进制值。
EX:‰--->"‰"
®--->"®"
Å--->"Å"
那么,用十进制值替换所有字符的优化方法是什么呢。我有超过1000个字符和实体的列表。
您应该使用WebUtility.HtmlEncode Method (String)
假设您可以轻松地将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] );
}
第二种方法是遍历文件中的每个字符,看看它是否需要替换(请注意,我们从文件末尾向后开始;如果向前,我们将不得不不断修改索引值,因为我们正在为文件添加长度):
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
一次读取一个字节的文件。