分割符替换转义
在开发时遇到对字符串切分,但是切分符号遇到 .?{}[]^*\/时切分会报错,这是由于java的spilt()方法使用的regex其实是用正则表达式,这些符号在正则中都有确定的含义导致切分失败
所以需要转义,下面为网上找的一个转义方法特此记录
public static String escapeQueryChars(String s) {
if (StringUtils.isBlank(s)) {
return s;
}
StringBuilder sb = new StringBuilder();
//查询字符串一般不会太长,挨个遍历也花费不了多少时间
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// These characters are part of the query syntax and must be escaped
if (c == '\\' || c == '+' || c == '-' || c == '!' || c == '(' || c == ')'
|| c == ':' || c == '^' || c == '[' || c == ']' || c == '\"'
|| c == '{' || c == '}' || c == '~' || c == '*' || c == '?'
|| c == '|' || c == '&' || c == ';' || c == '/' || c == '.'
|| c == '$' || Character.isWhitespace(c)) {
sb.append('\\');
}
sb.append(c);
}
return sb.toString();
}