.NET Core: заменить текст в htmlC#

Место общения программистов C#
Ответить
Anonymous
 .NET Core: заменить текст в html

Сообщение Anonymous »

В настоящее время я использую регулярное выражение для поиска и замены текста в HTML-контенте из WYSIWYG в основном приложении dotnet. Ниже приведен фрагмент моего подхода, который включает в себя кодирование HTML-объектов и динамическое построение шаблонов регулярных выражений на основе искомого текста:

Код: Выделить всё

public static string EncodeHtml(string text)
{
// Encoding HTML special characters
var replacements = new Dictionary
{
{'', ">"},
// additional entities...
};

StringBuilder sb = new StringBuilder();

foreach (char c in text)
{
if (replacements.ContainsKey(c))
sb.Append(replacements[c]);
else
sb.Append(c);
}

return sb.ToString();
}

public static string FindAndReplace(string html, string search, string replace)
{
// Encoding the search and replace strings
search = EncodeHtml(search);
replace = EncodeHtml(replace);

// Building regex pattern to consider HTML tags
string pattern = String.Join("(]+>)*", search.ToCharArray());
return Regex.Replace(html, pattern, replace, RegexOptions.IgnoreCase);
}
Я протестировал это со сложными структурами HTML, включая вложенные элементы и смешанный контент, и, похоже, это работает. Однако меня беспокоит надежность и надежность использования регулярных выражений для манипулирования HTML из-за потенциальных крайних случаев, которые я, возможно, не предвидел.

Код: Выделить всё

Our <t[b]e[/b]stingt[/b]ext> is split here.
[list]
[*]
First list item

[*]
Second list item with nested <testingtext>

[*]
Third list item

[/list]

This is


<t[i]e[/i]sting[b]t[/b]ext>

at the bottom.


Достаточно ли этот подход надежен для производственных сред?
Каковы потенциальные подводные камни при использовании регулярных выражений для манипулирования текстом HTML?
Было бы целесообразнее использовать для этой цели подходящий анализатор HTML, например HtmlAgilityPack? Если да, не могли бы вы привести пример того, как я мог бы добиться той же функциональности с помощью HtmlAgilityPack?

Подробнее здесь: https://stackoverflow.com/questions/790 ... xt-in-html
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»