我有一个给定的字符串:
"Hi there <ss type="laugh">:)</ss>"
当我使用
Regex.Replace(s, @"<(.|\n)*?>", string.Empty);
它返回我
"Hi there :)"
我如何修改表达式以删除所有“ss”标签和它们之间的所有内容?
最佳答案
该字符串包含一个常规的 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();
关于c# - 正则表达式从字符串中删除特定标签及其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312421/