java - 在字符串的特殊字符前添加 escape "\"

标签 java string special-characters

我有一个简单的 SQL 查询,我在其中检查查询是否与我拥有的任何字段匹配。我为此使用 LIKE 语句。我的字段之一可以有特殊字符,搜索查询也是如此。所以我正在寻找一个解决方案,我需要在特殊字符前面转义“\”。

query = "hello+Search}query"

我需要把上面的改成

query = "hello\+Search\}query"

除了分别搜索每个特殊字符并添加“\”之外,是否有一种简单的方法可以做到这一点。因为如果我没有转义字符,我会收到错误消息

java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0

提前致谢

最佳答案

决定要转义哪些特殊字符,然后直接调用

query.replace("}", "\\}")

您可以将允许的所有特殊字符保留在某个数组中,然后对其进行迭代并替换出现的示例。 此方法替换所有 regex meta characters .

public String escapeMetaCharacters(String inputString){
    final String[] metaCharacters = {"\\","^","$","{","}","[","]","(",")",".","*","+","?","|","<",">","-","&","%"};

    for (int i = 0 ; i < metaCharacters.length ; i++){
        if(inputString.contains(metaCharacters[i])){
            inputString = inputString.replace(metaCharacters[i],"\\"+metaCharacters[i]);
        }
    }
    return inputString;
}

您可以将其用作 query=escapeMetaCharacters(query); 不要认为您会找到的任何图书馆都可以做更多的事情。它充其量定义了一个完整的特殊字符列表。

关于java - 在字符串的特殊字符前添加 escape "\",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498432/

相关文章:

javascript - 将 Bson 转换为字符串 - MongoDB/Javascript

执行 SELECT 时的 MySQL 特殊字符显示其他没有特殊字符的结果

java - 该应用程序可能在其主线程中执行了过多的工作

java - 如何将 .properties 文件加载到 jsp 中

python - 如何在 Ruby 中模拟 Python 的命名 printf 参数?

ios - 如何在 Swift 3 中将 CoreData 日期转换为日期时间

java - String 中的 4 个子字符串

java - 单独线程中的屏幕捕获导致 Java 应用程序缓慢/无响应

php - 使用 PHP 将特殊字符转换为普通字符,例如将 ã、é、ç 转换为 a、e、c

PHP ldap_add 函数转义 DN 语法中的 ldap 特殊字符