c# - 带有特定标签的 String.Split

标签 c# string split

我想分割一串html标签。例如我有一个字符串:

<p></p>

<table>

<table><p></p></table>


</table>

我想要检索的是:

<table>

<table><p></p></table>


</table>

现在的问题是当我打电话时:

string[] values = pContent.Split(new string[] {"<table>","</table>" }, StringSplitOptions.RemoveEmptyEntries);

我得到:

<table>

    <table><p></p>

我如何获得其余的?

最佳答案

您可以尝试以下代码:

        string input = String.Concat("<root>", @"<p></p><table><table><p></p></table></table>", "</root>");

        XDocument doc = XDocument.Parse(input);
        var valuesStr = doc.Root.Element("table").ToString();
        string[] values = Regex.Matches(valuesStr, @"<.+?>")
            .Cast<Match>()
            .Select(o => o.Groups[0].Value)
            .ToArray();

它首先创建 XDocument 类(用于解析 XML 的类之一)的实例,它添加名为“root”的根元素,以便能够创建 XDocument(每个 XML 文档都必须有一个根)。 XML 文档的内容是从字符串中解析出来的。然后它获取包含文档文本表示形式的字符串 - 为此,首先访问 Root 属性,因为“table”元素就位于根节点下方,之后调用带有“table”的 Element() 方法来获取第一个元素根下的名称为“table”(在本例中,节点下只有一个这样的元素),之后 ToString() 获取文本描述。

Regex.Matches 用于从字符串中提取每个元素,它返回 MatchCollection,然后通过 Cast() 将其转换为 IEnumerable,之后在 IEnumerable 上调用 Select() 扩展方法,该方法获取 Regex 捕获的文本值.匹配 IEnumerable 中的每个 Match,然后通过 ToArray() 方法将这些值作为 string[] 返回。

关于c# - 带有特定标签的 String.Split,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11361964/

相关文章:

r - 在R中拆分apply recombine,plyr,data.table

Java String.split(),如何防止新数组中出现空元素

c# - 用于重复比较的谓词表达式函数

swift - 避免以逗号分隔的双字母单词列表中的重复项

c# - 在原始字符串中获取函数参数值的最佳 C# 正则表达式模式?

java - 如何在条目顺序不断变化时比较两个 JSON 字符串

c# - Fluent Scheduler 未在特定时间运行

c# - MVVM 通用 app.config

c# - ASP.NET MVC : How to handle cross-action TempData and ViewData

string - 在满足条件的特定字符处拆分字符串