ODF Toolkit TextNavigation не может найти строку, содержащую специальный символ (знак доллара)

Я пытаюсь найти заполнитель в ODT-документе. Поэтому я использую Apache ODF Toolkit - Simple 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

Что вызывает эту ошибку?


person Yannick Huber    schedule 23.08.2018    source источник


Ответы (1)


Похоже, проблема заключалась в том, что мне нужно избегать символа $, потому что он используется как регулярное выражение (проверьте этот вопрос для более подробной информации).

Итак, изменив код на

TextNavigation search = new TextNavigation("\\$TestString", templateDoc);

решает проблему

person Yannick Huber    schedule 23.08.2018