1

我有一个格式如下的字符串: <b>*GTPersonnel</b><table border=1><tr><td>&#115;&#115;&#50;&#49;&#49;&#49;</td></tr></table>

我想处理<td>标签之间的那些数据,并用它的相等字符替换每个出现的&#Blah;,例如,&#115;我希望它被替换为字符a,因为115它是字符代码。

我可以遍历整个字符串,查找&#索引,查找;索引,读取中间的字符并查找该代码的字符……嗯,它有点算法……我想知道.NET 是否有更好的东西我可以利用这个目的。

4

2 回答 2

2

如果您使用XHTML,您可以简单地修改对象中的EntityHandling属性XmlTextReader以告诉它自动处理字符实体:

XmlTextReader reader = new XmlTextReader( "temp.xml" );
reader.EntityHandling = EntityHandling.ExpandCharEntities;

然后,您可以使用XmlTextReader或借助LINQ to XML. 例如,如果您有这样的 xml 文件:

<?xml version="1.0" encoding="utf-8" ?>
<document>
    <td>&#115;&#115;&#50;&#49;&#49;&#49;</td>
</document>

然后你写下面的代码和接下来的几个字符串:

while ( reader.Read() )
    if ( reader.NodeType == XmlNodeType.Text )
        Console.WriteLine( reader.Value );

您可以在控制台窗口中获得ss2111价值。

于 2011-03-09T23:13:06.960 回答
1

一种高性能、相当简单的方法是设置一个并行字符串构建器(将其长度初始化为与原始字符串相同),并通过连续的 IndexOf("#") 调用和适当的转换从第一个开始对其进行附加。这样,您不会进行任何插入或删除操作,也不会调整字符串生成器的后备数组的大小(末尾除外),并且您只会向前读取第一个字符串。使用 Aggregate() 可以实现 LINQifying,但麻烦多于其价值,而且可能不太清楚。

于 2011-03-09T22:57:21.503 回答