1

我正在使用包含不间断空格的 Html Agility Pack 在 c# 中解析 html 表。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

 其中 page 是包含文本中特殊字符的表格的字符串。

<td>&#160;test</td>
<td>number =&#160;123&#160;</td>

使用SelectSingleNode(".//td").InnerTextwill 包含这个特殊字符,但我想忽略它们。

是否有一些优雅的方法可以在不修改源表的情况下忽略这一点(有或没有 Html Agility Pack 的帮助)?

4

2 回答 2

3

你可以使用HtmlDecode

string foo = HttpUtility.HtmlDecode("Special char: &#160;");

会给你一个字符串:

特殊字符:

于 2013-08-14T09:21:50.493 回答
0

您所说的“特殊字符”不间断空格是可以完全合法地出现在文本中的有效字符,就像“花式引号”、em-dash 等一样。

通常我们希望将某些字符视为等价的。

  • 因此,您可能希望将 em-dash、en-dash 和减号/dash 视为相同。
  • 或花式引号与直引号相同。
  • 或非破空间作为普通空间。

然而,这不是 HTML 敏捷包可以提供帮助的东西。您需要使用类似 string.Replace 或您自己的规范化函数来执行此操作。

我会建议类似:

static string CleanupStringForMyApp(string s){
    // replace characters with their equivalents
    s = s.Replace(string.FromCharCode(160), " ");
    // Add any more replacements you want to do here
    return s;
}
于 2013-08-14T09:30:25.537 回答