ODF Toolkit TextNavigation 找不到包含特殊字符(美元符号)的字符串
ODF Toolkit TextNavigation can't find string containing a special character (dollar sign)
我正在尝试在 ODT 文档中查找占位符。因此,我正在使用 Apache ODF 工具包 - 简单 API。
我创建了一个包含文本 $TestString
的 odt 文件。以下代码应该可以找到它:
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)
) 中删除 $ 时它起作用了。
代码然后returns输出:
[TestString] started from 1 in paragraph:$TestString
导致此错误的原因是什么?
问题似乎是,我必须转义 $
-Symbol,因为它用作正则表达式(查看 this question 了解更多详情)。
所以将代码更改为
TextNavigation search = new TextNavigation("\$TestString", templateDoc);
解决问题
我正在尝试在 ODT 文档中查找占位符。因此,我正在使用 Apache ODF 工具包 - 简单 API。
我创建了一个包含文本 $TestString
的 odt 文件。以下代码应该可以找到它:
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)
) 中删除 $ 时它起作用了。
代码然后returns输出:
[TestString] started from 1 in paragraph:$TestString
导致此错误的原因是什么?
问题似乎是,我必须转义 $
-Symbol,因为它用作正则表达式(查看 this question 了解更多详情)。
所以将代码更改为
TextNavigation search = new TextNavigation("\$TestString", templateDoc);
解决问题