Maison >Java >javaDidacticiel >Comment supprimer efficacement les littéraux de chaîne Java ?
Problème :
En Java, vous avez des littéraux de chaîne Java qui nécessitent une suppression de l'échappement avant d'être transmis aux fonctions qui attendent des chaînes sans échappement (par exemple, la conversion de n en nouvelle ligne et en simple ).
Solution :
Bien que Java ne dispose pas d'une fonction intégrée pour cela, des options sont disponibles :
1. [Commons Lang StringEscapeUtils](https://commons.apache.org/proper/commons-lang/javadocs/api-3.12/org/apache/commons/lang3/StringEscapeUtils.html)** :
Cette bibliothèque fournit une méthode unescapeJava(). Cependant, il a des limites (par exemple, oublier pour null).
2. Fonction Unescape personnalisée :
Une fonction personnalisée peut être écrite pour résoudre le problème, en répondant aux limites de la méthode Commons Lang. Voici un exemple de solution personnalisée :
public static String unescapeJavaString(String oldstr) { // Initialize variables StringBuilder newstr = new StringBuilder(oldstr.length()); boolean saw_backslash = false; for (int i = 0; i < oldstr.length(); i++) { int cp = oldstr.codePointAt(i); // Handle UTF-16 code units if (oldstr.codePointAt(i) > Character.MAX_VALUE) { i++; } // Process characters if (!saw_backslash) { if (cp == '\') { saw_backslash = true; } else { newstr.append(Character.toChars(cp)); } continue; } // Handle backslash sequences if (cp == '\') { saw_backslash = false; newstr.append('\'); newstr.append('\'); continue; } // Handle specific escape sequences switch (cp) { case 'r': newstr.append('\r'); break; case 'n': newstr.append('\n'); break; case 'f': newstr.append('\f'); break; // Handle other escape sequences as needed // ... } saw_backslash = false; } // Append any remaining characters if (saw_backslash) { newstr.append('\'); } return newstr.toString(); }
Cette fonction personnalisée gère diverses séquences d'échappement, y compris celles non prises en charge par la méthode Commons Lang.
Considérations supplémentaires :
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!