Заменить хэштег в html теле ссылкой без соответствия inline CSS в C# - PullRequest
0 голосов
/ 21 июня 2020

Итак, я пытаюсь заменить хэштеги в строке HTML.

проблема, с которой я столкнулся, заключается в том, что он соответствует inline css и anchor tags, которые указывают на фрагмент на странице.

Возьмем, к примеру, этот html:

<div style="color:#ffff">#my_tag</div>

и код:

public static string ReplaceHashtag(string input)
{
    Func<string, string> replacer = v => $"<a href=\"/tags/{v}\">{v}</a>";

    return Regex.Replace(input, @"\b?\#\w*\b", match => replacer(match.Value));
}

Заменит атрибут css и хэштег на тег привязки .

1 Ответ

1 голос
/ 21 июня 2020

Я не тестировал это с широким диапазоном входных данных (только образец входных данных, представленных в OP), но этот шаблон, похоже, работал для меня:

        var pattern = @">.*(#\w*).*<";
        var tempHtml = "<div style=color:#ffff>#my_tag</div>";
        var ms = Regex.Match(tempHtml, pattern, RegexOptions.IgnoreCase);
        var tag = ms.Groups.Count > 0 ? ms.Groups[1].Value : string.Empty;

Если вам не нужен «#» в захваченной группе, затем просто установите «#» вне скобок, например:

var pattern = @">.*#(\w*).*<";

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...