Maison >Java >javaDidacticiel >Comment échapper correctement aux barres obliques inverses dans les chaînes Java en utilisant « replaceAll » et « replace » ?

Comment échapper correctement aux barres obliques inverses dans les chaînes Java en utilisant « replaceAll » et « replace » ?

DDD
DDDoriginal
2024-11-27 12:14:10480parcourir

How to Properly Escape Backslashes in Java Strings using `replaceAll` and `replace`?

Échapper aux barres obliques inverses dans les chaînes à l'aide de replaceAll

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn