我有一个字符串,其格式如下:
<b>*GTPersonnel</b><table border=1><tr><td>ss2111</td></tr></table>
我想要处理<td>
个代码之间的数据,并将&#Blah;
的每个匹配项替换为相同的字符,例如s
我希望将其替换为a
字符115
,因为&#
是该字符的代码。
我可以遍历整个字符串,找到;
索引,找到{{1}}索引,读取其中的字符并找到该代码的字符......好吧它有点算法..我想知道.NET是否有更好的东西可以用于这个目的。
答案 0 :(得分: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>ss2111</td>
</document>
你编写下面的代码和下面几个字符串:
while ( reader.Read() )
if ( reader.NodeType == XmlNodeType.Text )
Console.WriteLine( reader.Value );
您在控制台窗口中获得ss2111
值。
答案 1 :(得分:1)
一种高性能,相当简单的方法是建立一个并行字符串构建器(将其长度初始化为与原始字符串相同),并通过连续的IndexOf(“#”)调用继续从第一个字符串追加到它适当的转换。这样你就不会进行任何插入或删除操作,你没有调整stringbuilder的后备数组的大小(除了最后),而你只是向前读取第一个字符串。 LINQifying可以使用Aggregate(),但会比它的价值更麻烦,而且可能不太清楚。