Лучший способ добавить тег в HTML код

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 967
Благодарностей
4 411
Баллы
113
Допустим у меня большой HTML текст и мне нужно добавить теги картинок после первого H2, последнего H2 и где-нибудь в серединке после H2.
Посчитал количество H2, вычислил средний H2.
По как правильнее воткнуть <img src="http://300x241.jpg" alt="" width="" height="" />
в нужные места?
Пока приходит только в голову делить исходный HTML в массив через Split или Matches, потом искать H2 и добавлять в массив новый элемент с тегом картинки если счетчик совпадает 1, 15, 30 (для примера).
Может есть проще стратегия?
 

esouldy

Client
Регистрация
28.02.2016
Сообщения
185
Благодарностей
92
Баллы
28
либа htmlagilitypack для сишарпа, вроде умеет
 
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 967
Благодарностей
4 411
Баллы
113
либа htmlagilitypack для сишарпа, вроде умеет
Да, я думал про неё, но не хочу лишние либы в проект пихать.
Вот вариант string.Replace ("</h1>". "</h1><img ..../>") отлично бы подошел, если бы умел срабатывать только в нужных мне индексах.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 967
Благодарностей
4 411
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113
C#:
string str = project.Variables["html"].Value;
string pattern = "</h1>";
string replacement = "</h1><img src=\"http://300x241.jpg\" alt=\"\" width=\"\" height=\"\" />";

Regex reg = new Regex(pattern);
int count = reg.Matches(str).Count;
int r = new Random().Next(1, count - 1);

str = reg.Replace(str, replacement, 1, reg.Matches(str)[0].Index); // замена первого
str = reg.Replace(str, replacement, 1, reg.Matches(str)[r].Index); // замена где-нибудь в серединке
str = reg.Replace(str, replacement, 1, reg.Matches(str)[count - 1].Index); // замена последнего
return str;
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 116
Баллы
113
Кстати вспомнил, если что, есть зенновская реализация замены Replace Method
 
  • Спасибо
Реакции: Astraport

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)