我有一个给定的字符串:
"Hi there <ss type="laugh">:)</ss>"
当我使用
时Regex.Replace(s, @"<(.|\n)*?>", string.Empty);
它让我回头
"Hi there :)"
如何修改Expression以删除所有“ss”标签以及它们之间的所有内容?
答案 0 :(得分:1)
该字符串包含常规XML标记,因此您可以使用XElement
。
此代码将保留外部元素的文本(文本在标记之外):
var s = "Hi there <ss type=\"laugh\">:)</ss>";
var el = XElement.Parse(string.Format("<root1>{0}</root1>", s));
var result = string.Concat(el.Nodes().OfType<XText>().Select(t => t.Value)).Trim();
确保使用System.Xml.Linq
命名空间。
如果您有其他XML标记,并且只想删除ss
标记:
var s = "<b>Hi</b> there <ss type=\"laugh\">:)</ss>";
var el = XElement.Parse(string.Format("<root1>{0}</root1>", s));
el.Descendants("ss").Remove();
var reader = el.CreateReader();
reader.MoveToContent();
var result2 = reader.ReadInnerXml().Trim();