使用visual C#将html实体转换为十进制值

本文关键字:转换 十进制 实体 html visual 使用 | 更新日期: 2023-09-27 18:29:35

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

EX:‰--->"&#137"
®--->"®"
Å--->"&#197"

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

使用visual C#将html实体转换为十进制值

您应该使用WebUtility.HtmlEncode Method (String)

假设您可以轻松地将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] );
}

第二种方法是遍历文件中的每个字符,看看它是否需要替换(请注意,我们从文件末尾向后开始;如果向前,我们将不得不不断修改索引值,因为我们正在为文件添加长度):

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一次读取一个字节的文件。