Maison >Java >javaDidacticiel >Comment échapper correctement aux barres obliques inverses dans les chaînes Java en utilisant « replaceAll » et « replace » ?
Tentative de convertir la chaîne "quelque chose" en "quelque chose" à l'aide de String#replaceAll() est problématique en raison du double rôle du caractère en tant que caractère d'échappement dans les chaînes et dans les caractères normaux. expressions.
L'application de l'expression string.replaceAll("", "\") entraîne l'erreur "java.util.regex.PatternSyntaxException : erreur interne inattendue près de l'index 1". En effet, l'expression régulière interprète le premier comme un caractère d'échappement pour le second.
Solution 1 : Double échappement à l'aide de Regex
Pour échapper le caractère dans une expression régulière , il doit y avoir une double évasion. L'expression correcte est :
string.replaceAll("\\", "\\\\");
Solution 2 : Remplacement caractère par caractère à l'aide de replace
Si un remplacement exact caractère par caractère est souhaité, des expressions régulières ne sont pas nécessaires. La méthode String#replace() peut être utilisée à la place :
string.replace("\", "\\");
Remarque supplémentaire : échappement pour JavaScript
Si la chaîne est destinée à être utilisée dans un JavaScript Dans ce contexte, la méthode StringEscapeUtils#escapeEcmaScript() est recommandée pour couvrir une plus large gamme de caractères d'échappement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!