【问题标题】:How to encapsulate text into tags?如何将文本封装到标签中?
【发布时间】:2011-02-02 10:13:19
【问题描述】:

假设我们有这样的字符串变量:

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

问题是我如何将每个“非标记”文本部分封装到某个标记中,以便像这样:

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("&lt;plain&gt;First regular, &lt;/plain&gt;&lt;b&gt;bold&lt;/b&gt;&lt;plain&gt;,&lt;/plain&gt;&lt;i&gt;italic&lt;/i&gt;&lt;plain&gt;,&lt;/plain&gt;&lt;u&gt;underline&lt;/u&gt;&lt;plain&gt;,&lt;/plain&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;bold+italic+underline&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;")

【问题讨论】:

  • 您的问题不清楚..您打算如何将未标记的内容放入任何标签中..您的两个示例文本都是相同的..您在谈论哪个标签..是 HTML
  • 我们需要更多信息。现在,第一反应是您无法使用正则表达式解析 xml,但如果您正在使用 xml 的一个子集,那么也许,只是也许,我们可以解决一些问题。 stackoverflow.com/questions/1732348/…
  • 如果你需要嵌套,我不推荐使用正则表达式,虽然 .NET 的实现可以处理。

标签: c# regex string


【解决方案1】:

这段代码有点失败,但它应该能让你走上正确的道路:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多