Heim >Java >javaLernprogramm >Wie kann man Java-String-Literale richtig entescapen?

Wie kann man Java-String-Literale richtig entescapen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-21 02:50:09226Durchsuche

How to Properly Unescape Java String Literals?

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

Das Problem

Das Extrahieren von String-Literalen aus Java-Quellcode und deren Verwendung in einer Funktion ist erforderlich Übergeben der nicht maskierten Version des Literals. Dazu gehört das Konvertieren von Escape-Sequenzen wie n in eine neue Zeile und in eine einzelne .

Unescaping-Funktionen

1. Apache Commons Lang org.apache.commons.lang.StringEscapeUtils.unescapeJava()

Obwohl diese Funktion existiert, weist sie mehrere Einschränkungen auf:

  • Ignoriert für null
  • Oktale werden nicht verarbeitet
  • Kann nicht regex-konform verarbeitet werden Escapezeichen wie a, e und cX
  • Bietet keine Unterstützung für logische Unicode-Codepunkte nach Nummer
  • Verwendet UCS-2-Code anstelle von UTF-16-Code

2. Benutzerdefinierter Unescaper

Eine alternative Lösung ist eine benutzerdefinierte Funktion, die die Einschränkungen des Apache-Codes behebt:

public static final String unescape_perl_string(String oldstr) {
    /* ... Code ... */
}

Diese Funktion bietet umfassende Unescaping-Funktionen, einschließlich:

  • Standard-Escapezeichen (a, e, f, n, r, t)
  • Oktal Escapezeichen ( , N, NN, N, NN, NNN)
  • Steuerzeichen (?cX)
  • Alte Hex-Escapezeichen (xXX)
  • Perl-Hex-Escapezeichen (!x{ XXX})
  • Nicht unterstützte Escapes (b wird durchlaufen)

Das obige ist der detaillierte Inhalt vonWie kann man Java-String-Literale richtig entescapen?. 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