2011-03-09 70 views
1

我有了這樣的格式的字符串: <b>*GTPersonnel</b><table border=1><tr><td>&#115;&#115;&#50;&#49;&#49;&#49;</td></tr></table>什麼是AA不錯的,性能良好的方法來處理字符串

我想處理這些數據是<td>標記之間,取而代之的&#Blah;每次出現它的相等字符,例如在&#115;中,我希望它被字符a替換,因爲115是該字符的代碼。

我可以循環遍歷整個字符串,找到&#索引,找到;索引,在中間讀取字符並找到該字符代碼...以及它有點算法...我想知道是否有.NET中更好的東西,我可以使用這個puprpose。

+0

首先,請注意格式化您的問題。謝謝。 – 2011-03-09 22:50:05

+0

謝謝,我發佈後,我注意到哦親愛的上帝,它已經處理了我的標籤!我正在閱讀幫助文件修復它,非常感謝您修復它 – Bohn 2011-03-09 22:50:53

+0

's''s',而不是'a' ... – 2011-03-09 22:52:21

回答

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值。

1

一個高性能,合理簡單的方法是設置一個並行字符串生成器(初始化其長度與原始字符串相同),並從第一個連續的IndexOf(「#」)調用中繼續添加並行字符串適當的轉換。通過這種方式,您不會執行任何插入或刪除操作,也不會調整字符串構建器的後備數組的大小(除了最後),並且只讀取第一個字符串。對Aggregate()進行LINQ化是可能的,但會比它的價值更麻煩,可能不太清晰。

相關問題