ich eine Java-String habenWie aus ein Escape-Zeichen auszuschließen als Escape-Zeichen behandelt wird
String t = "Region S\u00FCdost SER";
wo \ u00FC ein Ersatz für das Unicode-Zeichen ist „ü“
Wenn ich eine neue hinzufügen Wenn ich char an die obige Zeichenfolge lege, würde ich immer noch wollen, dass meine untere Funktion anderen Zeichen außer dem aktuellen entweicht.
Zum Beispiel würde die folgende Funktion für die erneute Ausführung das Ergebnis als "Region S \\ u00FCdost SER" und "Region S \\\\ u00FCdost SER" bei nachfolgenden Iterationen zurückgeben.
Wie verhindern wir dies?
public static String escapeString(String str)
{
StringBuffer result = new StringBuffer();
// char is 16 bits long and can hold an UTF-16 code
// i iterate on chars and not on code points
// i guess this will be enough until we need to support surrogate pairs
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
switch (c) {
case '"':
result.append("\\\""); //$NON-NLS-1$
break;
case '\b':
result.append("\\b"); //$NON-NLS-1$
break;
case '\t':
result.append("\\t"); //$NON-NLS-1$
break;
case '\n':
result.append("\\n"); //$NON-NLS-1$
break;
case '\f':
result.append("\\f"); //$NON-NLS-1$
break;
case '\r':
result.append("\\r"); //$NON-NLS-1$
break;
case '\'':
result.append("\\'"); //$NON-NLS-1$
break;
case '\\':
result.append("\\\\"); //$NON-NLS-1$
break;
default:
if (c < 128)
{
//is ascii
result.append(c);
}
else
{
result.append(
String.format("\\u%04X", (int) c)); //$NON-NLS-1$
}
}
}
return result.toString();
}
}
Sie können nicht, Compiler vor der Erstellung von Binärdateien ändert alle Unicode-Notation '\ uXXXX' mit seinen richtigen Zeichen, so in Binärdateien' String t 'endet mit' ü', nicht '\ u00FC'. (Dies ist auch der Grund, warum wir einen Kommentar schreiben können wie '// \ u000a System.out.println (" Hallo ");' und hallo auf dem Bildschirm sehen) – Pshemo
@Pshemo Vielleicht übergibt er die Zeichenfolge als eine Laufzeiteingabe – Hackerdarshi
@Hackerdarshi Meine Annahme basiert auf "Ich habe eine Java-Zeichenfolge" String t = "Region S \ u00FCdost SER"; "". Wenn diese Zeichenfolge von einer externen Ressource stammt, die explizit die Zeichen "' '' '' '' '' '' 'restOfUnicode' 'sendet, dann sollte diese Frage erwähnt werden. – Pshemo