如何在Java中一次性从整个字符串中转义所有特殊字符

goz*_*ibj 7 java lucene

Lucene支持转义作为查询语法一部分的特殊字符.当前列表中的特殊字符是

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
Run Code Online (Sandbox Code Playgroud)

要逃避这些角色,请在角色前使用\.例如,搜索(1 + 1):2使用查询:

\(1\+1\)\:2
Run Code Online (Sandbox Code Playgroud)

我的问题是如何一次性逃离整个弦?例如,myStringToEscape = "ABC^ " ~ * ? :DEF";如何获取escapedString.

fem*_*gon 14

你可以使用QueryParser.escape,例如:

String escapedString = queryParser.escape(searchString);
queryParser.parse("field:" + escapedString);
Run Code Online (Sandbox Code Playgroud)