Maison > Java > javaDidacticiel > Comment supprimer correctement les littéraux de chaîne Java, en gérant toutes les séquences d'échappement ?

Comment supprimer correctement les littéraux de chaîne Java, en gérant toutes les séquences d'échappement ?

Mary-Kate Olsen
Libérer: 2024-12-21 12:29:10
original
743 Les gens l'ont consulté

How to Properly Unescape Java String Literals, Handling All Escape Sequences?

Comment extraire un littéral de chaîne Java en Java ?

Le problème

Il est nécessaire d'extraire les littéraux de chaîne du code source Java et de les transmettre à une fonction qui accepte une chaîne simple. Il est crucial de supprimer l'échappement de la chaîne littérale, ce qui signifie convertir des caractères tels que n et \, entre autres, vers leurs formes prévues.

Fonctions disponibles pour l'échappement Strings

  • org.apache.commons.lang.StringEscapeUtils.unescapeJava()

Cependant, cette fonction présente plusieurs limitations :

  • Ignore la représentation des caractères nuls ( )
  • Ne gère pas échappements octaux
  • Ne parvient pas à gérer les échappements acceptés par les expressions rationnelles Java (par exemple, a, e, cX)
  • Ne prend pas en charge les points de code Unicode et la gestion des caractères UTF-16

Solution personnalisée : unescape_perl_string()

Une fonction personnalisée, unescape_perl_string(), est proposée comme alternative :

  • Gère tous les échappements de chaînes Java : r, n, f, t, (entre autres).
  • Prend en charge les échappements octaux : , N, NN et autres.
  • Comprend des échappements supplémentaires : ?cX (caractères de contrôle), ?x{XXX} (échappements hexa avec accolades).
  • Analyse les échappements d'expressions régulières Java : [IDIOT JAVA PREPROCESSOR]uXXXX.

Détails d'implémentation

La fonction unescape_perl_string() :

  • Parcourt la chaîne d'entrée, en gérant les séquences d'échappement basées sur le caractère suivant .
  • Par exemple, r est converti en retour chariot, n en nouvelle ligne.
  • Les caractères de contrôle sont pris en charge, cX représentant le résultat du XOR logique du point de code du caractère avec '@'.
  • Les échappements hexadécimaux xXX et x{XXX} sont correctement déchiffrés.
  • Les points de code Unicode sont reconnus et convertis en leurs représentations de caractères.
  • Échappements inachevés ou invalides sont signalés et signalés comme des erreurs.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal