Удалить ширину и высоту тега img в заданной строке в asp.net - PullRequest
2 голосов
/ 27 апреля 2011

У меня есть html-строка от telerik radeditor, она может содержать теги изображений с шириной и высотой.Я хочу удалить эти свойства ширины и высоты.Как я могу сделать это в коде с помощью регулярных выражений или что-то еще в asp.net?

Ответы [ 4 ]

1 голос
/ 27 апреля 2011

Существует множество упоминаний о том, что не следует использовать регулярные выражения при разборе 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();
    }
}

это удалит атрибуты width и height из изображений в вашем html.

1 голос
/ 27 апреля 2011

Не уверен, что я понимаю вопрос, но почему бы просто не опустить их, вместо того, чтобы пытаться удалить их?

В вашем файле ASPX ....

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

И ради любви Божьей, не пытайтесь раздеть их с помощью регулярных выражений.

0 голосов
/ 06 июля 2011
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);
0 голосов
/ 27 апреля 2011

Два оператора замены Regex отлично справятся со своей задачей:

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 такой же)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...