Код: Выделить всё
/// This method only makes sure that we can also search and replace special html chars like `` which are represented in html as `<` and `>`.
public static string SimpleEncodeHtml(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 = SimpleEncodeHtml(search);
replace = SimpleEncodeHtml(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]stovacíte[/b]xt> 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
Мобильная версия