我想分割一串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/