当前位置: 首页 > 知识库问答 >
问题:

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

彭骏
2023-03-14

Lucene支持转义查询语法中的特殊字符。当前列表中的特殊字符是

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

要转义这些字符,请使用字符之前的\。例如搜索(1 1): 2使用查询:

\(1\+1\)\:2

我的问题是如何一气呵成地逃离整个字符串?例如myStringToEscape="ABC^ " ~ * ?:DEF";如何获得转义字符串

共有2个答案

戎劲
2023-03-14

如果你只是在寻找简单的替代品,这将做到这一点。

String regex = "([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\]|[&\\|]{2})";

String myStringToEscape = "ABC^ \" ~ * ? :DEF";
String myEscapedString = myStringToEscape.replaceAll(regex, "\\\\$1");

System.out.println(myEscapedString);

这将输出:

ABC\^ \" \~ \* \? \:DEF
应煌
2023-03-14

可以使用QueryParser.escape,例如:

String escapedString = queryParser.escape(searchString);
queryParser.parse("field:" + escapedString);
 类似资料:
  • 问题内容: 我面临网址问题,我希望能够转换标题,该标题可以包含任何内容,并去除所有特殊字符,因此它们仅包含字母和数字,当然我想用连字符替换空格。 怎么做?我听说过很多关于正则表达式(regex)的使用… 问题答案: 这应该可以满足您的需求: 用法: 将输出: 编辑: 嘿,只是一个简单的问题,如何防止多个连字符彼此相邻?并将它们替换为1?

  • 问题内容: 有没有一种方法可以将字符串转换为可以在Web文档中正确显示的字符串?例如,更改字符串 至 问题答案: 具有专门为此设计的功能: http://commons.apache.org/proper/commons- lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html

  • 我想在java中将所有“特殊字符”替换为特殊字符 例如“现金” 我有一个示例CSV文件 这里的CSV标题是“What”和“Where” 预期产出 示例代码如下 所有特殊字符、所有空格和双引号都应删除并替换为所需的输出。 我使用的是值。replaceAll(“[^A-Za-z0-9]”,“”),但它不工作。 错误 感谢您的帮助。regex的新成员。

  • 问题内容: 我需要定义一个数组,其中包含所有以下特殊字符。 我正在用这个 它接受除“和\以外的所有字符 请帮助如何定义这两个。 问题答案: 并且是String类中的特殊字符 是String的开始或结尾 用于创建如新线的某些字符 标签或你的情况逃脱特殊字符,如和 因此,要使它们成为文字,您必须使用和 另一个想法是使用而不是,这样您就不必转义,并且您的字符可以写为或(因为要求转义- 应该写为- 在这里

  • 问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题

  • 我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢