Замените слово, даже если оно содержит пустые теги HTML между ними, что разбивает его

Так что это довольно странный вопрос, я это знаю. Я использую инструмент под названием pdf2htmlEX, который преобразует PDF в HTML. Пока что результаты были чертовски впечатляющими. Я все еще видел одну ошибку во всех PDF-файлах, которые я конвертировал в HTML.

С этим HTML мне нужно динамически заменить некоторые строки на C#. Однако я не могу просто сказать, line.Replace("#SOME_STRING", "Another string") хотя я написал #SOME_STRING в документе перед экспортом в PDF. Почему бы и нет, спросите вы? Потому что выход pdf2htmlEX может выглядеть примерно так:

<div class="t m0 x5 h5 ya ff4 fs3 fc0 sc0 ls0 ws0">#SOME_ST<span class="_ _5"></span>RING </div>

Посмотрите, что пустой тег span с _ а также _5 учебный класс? Да, это мешает мне заменить мое слово. _5 класс просто имеет некоторую ширину (например, width: 0.9889px).

В этом случае, как бы я заменить #SOME_ST<span class="_ _5"></span>RING с чем-то еще?

Вот несколько случаев:

(#SOME_STRING)          #SOME_ST<span class="_ _5"></span>RING
(#SOME_OTHER_STRING)    #SOME_<span class="_ _7"></span>OTHER_ST<span class="_ _5"></span>RING

Я как бы потерялся здесь, потому что не могу удалить все _5 элементы, потому что класс рандомизирован каждый раз, когда я что-то изменить в документе.

РЕДАКТИРОВАТЬ: Итак, мне в основном нужен способ отфильтровать теги HTML из моей собственной пары ключ-значение, чтобы я мог заменить слова #SOME_STRING -> SOMETHING_ELSE,

1 ответ

Попробуйте использовать регулярные выражения для фильтрации всех пустых диапазонов:

var myRegex = new Regex(@"(?<emptyspan><span[^>]*></span>)", RegexOptions.None);
var strTargetString = @"<div class=""t m0 x5 h5 ya ff4 fs3 fc0 sc0 ls0 ws0"">#SOME_ST<span class=""_ _5""></span>RING </div> <span></span>";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    var emptyString = myMatch.Groups["emptyspan"].Value;
    // replace or remove empty string ??
}
Другие вопросы по тегам