假设我们有这样的字符串变量:
string input = "First regular, <b>bold</b>,<i>italic</i>,<u>underline</u>,<b><i><u>bold+italic+underline</u></i></b>"
问题是如何将每个“非taged”文本部分封装到某个标记中,以获得这样的smth:
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 :(得分: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>");