2011-02-02 3 views
0

レッツは、我々は、このような文字列変数を持っていると言う:それにはいくつかのHTMLタグを含めることができますテキストをタグにカプセル化するには?

string input = "First regular, <b>bold</b>,<i>italic</i>,<u>underline</u>,<b><i><u>bold+italic+underline</u></i></b>" 
  • 文字列。

質問は、私はこのようななめらかを取得するには、いくつかのタグにそれぞれ「非taged」テキストパートencapsuleことができる方法である:C#でこれを行う方法を

string output = "<plain>First regular, </plain><b>bold</b><plain>,</plain><i>italic</i><plain>,</plain><u>underline</u><plain>,</plain><b><i><u>bold+italic+underline</u></i></b>" 

?正規表現?どのようにそのような正規表現を表示する必要がありますか?

たぶんカプセル化は、私が必要なもの、良いスタートではありませんからXML構造を作成することです:

string input = "First regular, <b>bold</b>,<i>italic</i>,<u>underline</u>,<b><i><u>bold+italic+underline</u></i></b>" 

私は

XDocument xml = XDocument.Parse("<plain>First regular, </plain><b>bold</b><plain>,</plain><i>italic</i><plain>,</plain><u>underline</u><plain>,</plain><b><i><u>bold+italic+underline</u></i></b>")

+0

あなたは正しい経路であなたを取得する必要があります。どのように非タグ付けされたコンテンツをANYタグに入れようとしていますか?両方の例のテキストは同じです..どのタグがあなたについて話していますか?それはHTML –

+0

より多くの情報が必要です。さて、最初の反応は正規表現でxmlを解析できないということですが、xmlのサブセットで作業しているのであれば、多分、おそらく、私たちは何かを働かせることができます。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – DonkeyMaster

+1

ネストが必要な場合は、正規表現はお勧めしませんが、.NETの実装ではそれを処理する。 – leppie

答えて

0

にこのコードを作成する必要がある種類の失敗しているが、

string input = "First regular, <b>bold</b>,<i>italic</i>,<u>underline</u>,<b><i><u>bold+italic+underline</u></i></b>"; 
input = "<data>" + input + "</data>"; 
XmlDocument xml = new XmlDocument(); 
xml.InnerXml = input; 
XmlNodeList nodes = xml.SelectNodes("//text()"); 
foreach (XmlNode node in nodes) { 
    if (node.ParentNode.Name != "b" && node.ParentNode.Name != "i" && node.ParentNode.Name != "u") { 
     node.InnerText = "^^^^^" + node.InnerText + "$$$$$"; 
    } 
} 
input = xml.DocumentElement.InnerXml.Replace("^^^^^", "<plain>").Replace("$$$$$", "</plain>"); 
関連する問題