Код: Выделить всё
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);
}
Код: Выделить всё
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
Мобильная версия