Замена текста между тэгами html
Имеем html
текст загружаемый из базы данных для отображения клиентам. Необходимо заменить текст между тегами для незарегистрированных пользователей , чтобы им отображалась либо картинка либо текст с предложением регистрации, для просмотра кода.
Элементарный пример
string start = @"]";
string end = @"
"; string pattern = $@"(?s){start}.*?{end}"; string textToReplace = "
....
Здесь код
......
......
...
Здесь еще код"; string replaceWith = "Это новый текст, который будет на месте кода"; string output = Regex.Replace(textToReplace, pattern, replaceWith);
var text = File.ReadAllText("test.txt");
var pattern = "(?<=>).+?(?= DecodeQuotedPrintables(m.Value, Encoding.UTF8), options);
Еще пример
var s = "My temp folder is: [code]Path.GetTempPath()[/code]";
var result = Regex.Replace(s, @"\[code](.*?)\[/code]",
m =>
{
var codeString = m.Groups[1].Value;
// then you have to evaluate this string
return EvaluateMyCode(codeString)
});
Можно использовать какой-нибудь html-парсер. Например, HtmlAgilityPack
.
Вот код с его использованием.
var text = File.ReadAllText("test.txt");
int start = text.IndexOf("");
int end = text.IndexOf("");
var html = text.Substring(start, end - start + "".Length);
var doc = new HtmlDocument();
doc.LoadHtml(html);
foreach (var node in doc.DocumentNode.Descendants())
{
if (node.NodeType == HtmlNodeType.Text)
{
var trimmed = node.InnerText.Trim();
if (trimmed.Length > 0)
{
var decoded = DecodeQuotedPrintables(trimmed, Encoding.UTF8);
node.InnerHtml = decoded;
}
}
}
Console.WriteLine(doc.DocumentNode.OuterHtml);
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.