2011-02-02 29 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>"); 
相关问题