Java: 特定の文字をバックスラッシュでエスケープ
private final static List<Character> ESCAPE_CHARACTERS
= Arrays.asList('?', '&', '|', '!', '{', '}', '[', ']', '(', ')', '^', '~', '*', ':', '\\', '"', '\'', '+', '-');
private static StringBuilder escape(final String query) {
var builder = new StringBuilder();
for (int i=0; i < query.length(); i++) {
var c = query.charAt(i);
if (ESCAPE_CHARACTERS.contains(c)) {
builder.append('\\');
}
builder.append(c);
}
return builder;
}
正規表現でやるパターンもあるけど、分かりやすさとパフォーマンスではこっち?