Wie entescape ich ein Java-String-Literal in Java?
Das Problem
Es entsteht die Notwendigkeit, String-Literale aus dem Java-Quellcode zu extrahieren und zu übergeben zu einer Funktion, die eine einfache Zeichenfolge akzeptiert. Das Aufheben der Escapezeichenfolge für das String-Literal ist von entscheidender Bedeutung, d. h. die Konvertierung von Zeichen wie n und \ und anderen in ihre vorgesehene Form.
Verfügbare Funktionen für das Aufheben der Escapezeichenfolge Strings
- org.apache.commons.lang.StringEscapeUtils.unescapeJava()
Diese Funktion weist jedoch mehrere Einschränkungen auf:
- Ignoriert die Darstellung von Nullzeichen ( )
- Keine oktalen Escapezeichen verarbeiten
- Kann von Java-Regexes akzeptierte Escapezeichen (z. B. a, e, cX) nicht verarbeiten
- Es fehlt die Unterstützung für Unicode-Codepunkte und UTF-16-Zeichenverarbeitung
Benutzerdefinierte Lösung: unescape_perl_string()
Eine benutzerdefinierte Funktion, unescape_perl_string(), wird als Alternative vorgeschlagen:
-
Verarbeitet alle Java-String-Escapes: r, n, f, t, (unter anderem).
-
Unterstützt Oktal Escapezeichen: , N, NN und andere.
-
Enthält zusätzliche Escapezeichen: ?cX (Steuerzeichen), ?x{XXX} (Hexa-Escapezeichen mit geschweiften Klammern).
-
Parst Java-Regex-Escapes: [IDIOT JAVA PREPROCESSOR]uXXXX.
Implementierungsdetails
Die Funktion unescape_perl_string():
- Durchläuft die Eingabezeichenfolge und verarbeitet Escape-Sequenzen basierend auf dem folgenden Zeichen .
- Zum Beispiel wird r in einen Wagenrücklauf umgewandelt, n in a Zeilenumbruch.
- Steuerzeichen werden unterstützt, wobei cX das Ergebnis der logischen XOR-Verknüpfung des Codepunkts des Zeichens mit „@“ darstellt.
- Hexadezimale Escapezeichen xXX und x{XXX} werden ordnungsgemäß entschlüsselt.
- Unicode-Codepunkte werden erkannt und in ihre Zeichendarstellungen umgewandelt.
- Unvollendete oder ungültige Escapezeichen werden als Fehler gekennzeichnet und gemeldet.
Das obige ist der detaillierte Inhalt vonWie kann ich Java-String-Literale richtig entescapen und alle Escape-Sequenzen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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