Замените слово, даже если оно содержит пустые теги 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 ??
}