2011-02-02 124 views
0

讓我們說我們有這樣的字符串變量:如何將文本封裝到標籤中?

string input = "First regular, <b>bold</b>,<i>italic</i>,<u>underline</u>,<b><i><u>bold+italic+underline</u></i></b>" 
  • 字符串,它可以包含在它的一些html標籤。

的問題是,我怎麼能encapsule每個「非功能標籤」的文字部分爲一些標籤,讓水木清華這樣的:

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>" 

如何在C#這樣做嗎?正則表達式?如何看待這樣的正則表達式?

也許封裝沒有良好的開端,我需要的是創建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

你的問題並不清楚..以及你打算如何將非標記內容放入任何標記中。你的兩個示例文本是相同的。哪個標記是你在說的。是它HTML – 2011-02-02 10:16:44

回答

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>"); 
相關問題