1

次のような形式の文字列があります。 <b>*GTPersonnel</b><table border=1><tr><td>&#115;&#115;&#50;&#49;&#49;&#49;</td></tr></table>

タグの間にあるデータを処理し<td>、出現するたびに同じ文字に置き換えたい&#Blah;ので、たとえば、そのための文字コードであるため、文字だけに置き換えたいと思います。&#115;a115

文字列全体をループし、&#インデックスを見つけ、インデックスを見つけ;、その間の文字を読み取り、そのコードの文字を見つけることができます...それは少しアルゴリズム的です....NETでもっと良いものがあるかどうか疑問に思いました私はこの目的のために利用することができます。

4

2 に答える 2

2

を使用する場合は、オブジェクトのプロパティをXHTML簡単に変更して、文字エンティティを自動的に処理するように指示できます。EntityHandlingXmlTextReader

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( "#")呼び出しと適切な変換で最初から追加し続けることです。このようにして、挿入や削除を行わず、stringbuilderのバッキング配列のサイズを変更せず(最後を除く)、最初の文字列を前方にのみ読み取ります。Aggregate()を使用してそれをLINQ化することは可能ですが、それが価値があるよりも厄介で、おそらくあまり明確ではありません。

于 2011-03-09T22:57:21.503 に答える