Problem:
In Java gibt es Java-String-Literale die ein Demaskieren erfordern, bevor sie an Funktionen übergeben werden, die nicht maskierte Zeichenfolgen erwarten (z. B. Konvertieren von n in Newline und Single). ).
Lösung:
Während Java hierfür keine integrierte Funktion hat, stehen folgende Optionen zur Verfügung:
1. [Commons Lang StringEscapeUtils](https://commons.apache.org/proper/commons-lang/javadocs/api-3.12/org/apache/commons/lang3/StringEscapeUtils.html)**:
Diese Bibliothek stellt eine unescapeJava()-Methode bereit. Es gibt jedoch Einschränkungen (z. B. das Vergessen von Null).
2. Benutzerdefinierte Unescape-Funktion:
Eine benutzerdefinierte Funktion kann geschrieben werden, um das Problem zu lösen und die Einschränkungen der Commons-Lang-Methode zu beheben. Hier ist ein Beispiel einer benutzerdefinierten Lösung:
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(); }
Diese benutzerdefinierte Funktion verarbeitet verschiedene Escape-Sequenzen, einschließlich solcher, die von der Commons-Lang-Methode nicht unterstützt werden.
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWie entfesselt man Java-String-Literale effektiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!