删除两个字符之间的字符串中的所有内容

时间:2014-09-18 03:05:02

标签: c#

我有一些我正在从网页中提取的数据,我想知道如何删除这些字符之间的所有内容 - <和>,同时也删除这些字符本身。以下是我从网站

获取的字符串示例
<a>SomeTextHere</a>Moretext<br><tr>SomeText</tr>

我希望我的最终结果是 -

SomeTextHere MoreText SomeText

有没有办法可以快速有效地完成这项工作?

2 个答案:

答案 0 :(得分:3)

您可以使用这个简单的RegEx。

private string StripTagsRegex(string source) 
{
            return Regex.Replace(source, "<.*?>", string.Empty);
}

对于更复杂的工作,请使用Html Agility Pack,这是此通常推荐的工具。它将采用格式错误的HTML并将其按入XHTML,然后按照XML类等可遍历的DOM。

答案 1 :(得分:2)

您似乎要求的是用一个空格替换多个连续的html标签,而基于代码的答案只会连接标签两侧的内容

以下内容将删除实际标记和html注释,同时保留其他所有内容(包括不构成标记声明一部分的&lt;和&gt;字符。

private string StripTagsRegex(string source) 
{
    return Regex.Replace(source, "(</?[a-z][a-z0-9]*[^<>]*>|<!--.*?-->)+", " ", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline).Trim();
}

使用此方法:

<a>SomeTextHere</a>Moretext<br><tr>SomeText</tr>

成为

SomeTextHere MoreText SomeText

这是我认为你真正要求的。