Heim > Java > javaLernprogramm > Wie entfesselt man Java-String-Literale effektiv?

Wie entfesselt man Java-String-Literale effektiv?

Mary-Kate Olsen
Freigeben: 2024-12-16 03:06:13
Original
106 Leute haben es durchsucht

How to Effectively Unescape Java String Literals?

Wie entescape ich ein Java-String-Literal in Java?

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();
}
Nach dem Login kopieren

Diese benutzerdefinierte Funktion verarbeitet verschiedene Escape-Sequenzen, einschließlich solcher, die von der Commons-Lang-Methode nicht unterstützt werden.

Zusätzliche Überlegungen:

  • Testen Sie Ihre Unescaping-Funktion mit einer Vielzahl von Escape-Sequenzen, um sicherzustellen Genauigkeit.
  • Seien Sie vorsichtig mit Escapezeichen, die in der von Ihnen verwendeten Programmiersprache möglicherweise eine besondere Bedeutung haben.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage