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
Libérer: 2024-11-27 12:14:10
original
503 Les gens l'ont consulté

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("\\", "\\\\");
Copier après la connexion

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("\", "\\");
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal