我想使用C#和RegEx去除HTML字符串中的所有属性(及其值)。
例如:
<p>This is a text</p><span class="cls" style="background-color: yellow">This is another text</span>
会变成
<p>This is a text</p><span>This is another text</span>
此外,我需要删除所有属性,无论它们的值是否被引号括起来。
即
<p class="cls">Some content</p>
<p class='cls'>Some content</p>
<p class=cls>Some content</p>
应该全部导致
<p>Some content</p>
出于安全原因,我无法使用HTMLAgilityPack,因此我需要使用RegEx来执行此操作。
答案 0 :(得分:0)
我有一个没有正则表达式的解决方案。我们使用SubString()
和IndexOf()
混合使用。我不检查任何错误。这只是一个想法。
C#:
private static void Main(string[] args)
{
string s = @"<p>This is a text</p><span class=""cls"" style=""background-color: yellow"">This is another text</span>";
var list = s.Split(new[] {"<"}, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in list)
Console.Write(ClearAttributes('<' + item));
Console.ReadLine();
}
private static string ClearAttributes(string source)
{
int startindex = source.IndexOf('<');
int endindex = source.IndexOf('>');
string tag = source.Substring((startindex + 1), (endindex - startindex - 1));
int spaceindex = tag.IndexOf(' ');
if (spaceindex > 0)
tag = tag.Substring(0, spaceindex);
return String.Concat('<', tag, source.Substring(endindex));
}
输出:
<p>This is a text</p><span>This is another text</span>