Remplacer le caractère spécial avec une évasion précédé caractère spécial dans Java

Dans mon code java, si une chaîne de caractères d'entrée a obtenu l'un des caractères spéciaux mentionnés, qui devrait obtenir précédée par \\

Spécial jeu de caractères est {+, -, &&, ||, !, (, ), {, },[, ], ^, "", ~, *, ?, :, \}. J'ai essayé d'utiliser String.replaceAll(old,new) mais à ma grande surprise sa ne fonctionne pas, même si je suis en train de valeurs propres pour les "anciens" et "nouveaux".

if old=":",new="\:"

J'ai mis les caractères spéciaux dans une Chaîne de tableau, réitéré dans une boucle for, vérifier si elle est présente dans la chaîne, si oui, input.replaceAll(":","\\:"). Mais sa ne me donne pas le résultat attendu. S'il vous plaît aider

String[] arr = { "+", "-", "&&", "||", "!", "(", ")", "{", "}",
                "[", "]", "^", "\"", "~", "*", "?", ":", "\\", "AND", "OR" };

    for (int i = 0; i < arr.length; i++) {
//'search' is my input string

        if (search.contains((String) arr[i])) {

            String oldString = (String) arr[i];

            String newString = new String("\\" + arr[i]);
            search = search.replaceAll(oldString, newString);
            String newSearch = new String(search.replaceAll(arr[i],
                    newString));


        }
    }

OriginalL'auteur Cheese | 2012-12-04