10
votes

Comment supprimer des caractères d'échappement d'une chaîne en Java

J'ai la chaîne d'entrée comme "\\ {\\ {\\ {\ \\ {\\ {\ \\ {\\ {test}}}" code> et je veux supprimer tout "\" code>. Requis O / P: "{{{test}}}" code>.

J'utilise le code suivant pour y accomplir. P>

protected String removeEscapeChars(String regex, String remainingValue) {
    Matcher matcher = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(remainingValue);
    while (matcher.find()) {
        String before = remainingValue.substring(0, matcher.start());
        String after = remainingValue.substring(matcher.start() + 1);
        remainingValue = (before + after);
    }
    return remainingValue;
}


7 commentaires

Pourquoi ne pas simplement utiliser quelque chose remplaxl ("\\", "") Vous pouvez simplement ajouter d'autres personnages aussi ...


Passez-vous comme une entrée "\\ {test}" ou "\ {test}" ? Le dernier ne compilera pas.


Mes sorties pour vos exemples sont les suivants: I / P: "\\ {test}" - O / P: "\ test}" i / p: "\\ \ \\ {test }} "- O / P:" \\ {test}} " i / p:" \\ {\\ {\\ {\ \ \ {\\ {test}}} "- O / P:" \\ {\ {test}}} "


Peut-être que je ne comprends pas votre question cependant me semble que remplacera le fera. Voici un exemple qui supprimera les personnages '\', '|' et '/' de remplacement ("[\\\\] * [|] * [/] *" "," ")


Mon dernier commentaire avec les sorties différentes de celles que vous avez dit étaient avec la regex présentée avant @ Baz's Edition: "\\ {. *? \\}" . Avec la regex actuelle ( "\\\\\ {. *? \\\\\}" ) Vous obtenez un modèleSyntaxException .


@PRISON. Désolé, si j'ai changé le contenu de la question en quelque sorte. Je voulais juste améliorer la structure.


@Baz Non, vous n'avez pas changé le contenu. Vous n'avez changé que la façon dont il est montré. Il arrive que l'ajout du `rend l'évasion Char \ Ne pas travailler. Vous avez fait ressembler le code. Merci.


4 Réponses :


11
votes

Toute raison pour laquelle vous n'utilisez pas simplement string # remplacer code> ? xxx pré>

ou, si vous devez supprimer les backslashes seulement Quand ils sont avant d'ouvrir des accolades bouclées: P>

String noSlashes = input.replace("\\{", "{");


2 commentaires

La méthode est la méthode générique et j'utilise pour échapper à différents caractères. Je vais construire la valeur de regex basée sur des caractères à supprimer. Ici, mon code ne fonctionne que pour la 1ère occurrence non pour d'autres.


@ user1073430 Ce que je dis, c'est que vous semblez réécrire une méthode qui existe déjà. Vous pouvez également utiliser remplacement (code> si vous souhaitez utiliser regex.



2
votes

Il devrait être aussi simple que les suivantes:

String result = remainingValue.replace("\\", "");


0 commentaires

1
votes

Comme il a été répondu auparavant, si vous voulez seulement supprimer les barres SLASHES \ code> avant le { code>, le meilleur moyen est d'utiliser

String noSlashes = input.replace("\\{", "{");


0 commentaires

0
votes

Modifier la regex: "\\ & ([^;] {6})" xxx

Il devrait fonctionner ..


2 commentaires

Quelle question répondez-vous?


C'est la question toto :): "Comment supprimer des caractères d'échappement d'une chaîne en Java?"