删除asp.net中给定字符串中img标记的宽度和高度

时间:2011-04-27 04:12:26

标签: asp.net regex image

我有一些来自telerik radeditor的html字符串,它可能包含宽度和高度的图片标签。我想删除那些宽度和高度属性。 如何在代码中使用正则表达式或其他在asp.net中执行此操作?

4 个答案:

答案 0 :(得分:1)

我不确定我是否理解这个问题,但为什么不首先省略它们而不是试图删除它们?

在ASPX文件中....

<img src="images/myimage.jpg">

对于上帝的爱,不要试图用正则表达式将它们剥离出来。

答案 1 :(得分:1)

有很多关于not to use regex when parsing HTML的提及,所以你可以使用例如Html Agility Pack为此:

HtmlDocument document = new HtmlDocument();
document.LoadHtml(html);

var images = document.DocumentNode.SelectNodes("//img");
foreach (HtmlNode image in images)
{
    if (image.Attributes["width"] != null)
    {
        image.Attributes["width"].Remove();
    }
    if (image.Attributes["height"] != null)
    {
        image.Attributes["height"].Remove();
    }
}

这将删除html中图片的widthheight属性。

答案 2 :(得分:0)

两个正则表达式替换语句可以很好地完成这项任务:

str = Regex.Replace(str, @"(<img[^>]*?)\s+height\s*=\s*\S+",
        "$1", RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"(<img[^>]*?)\s+width\s*=\s*\S+",
        "$1", RegexOptions.IgnoreCase);

(这是一个C#片段 - 不确定ASP.NET是否相同)

答案 3 :(得分:-2)

str = Regex.Replace(str, @"(<img[^>]*?)\s+height\s*=\s*\S+",
        "$1", RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"(<img[^>]*?)\s+width\s*=\s*\S+",
        "$1", RegexOptions.IgnoreCase);