ODF Toolkit TextNavigation не может найти строку, содержащую специальный символ (знак доллара)
Я пытаюсь найти заполнитель в ODT-документе. Поэтому я использую Apache ODF Toolkit - Простой API.
Я создал ODT-файл, содержащий текст $TestString
, Следующий код должен найти его:
Document doc = TextDocument.loadDocument("path/to/test.odt");
TextNavigation search = new TextNavigation("$TestString", doc);
while (search.hasNext()) {
TextSelection item = (TextSelection) search.nextSelection();
System.out.println(item);
}
Моя проблема в том, что этот поиск не находит мою строку. Но это работает, когда я удаляю $ из TextNavigation (new TextNavigation("TestString", doc)
).
Затем код возвращает результат:
[TestString] началось с 1 в абзаце:$TestString
Что вызывает эту ошибку?
1 ответ
Решение
Кажется, проблема была в том, что я должен убежать от $
-Символ, потому что он используется в качестве регулярного выражения (проверьте этот вопрос для более подробной информации).
Так что изменение кода на
TextNavigation search = new TextNavigation("\\$TestString", templateDoc);
решает проблему