2015-06-08 10 views
6

Ich habe den folgenden Code verwendet, um das Auftreten von "\" zu ersetzen, aber es funktioniert nicht.String ersetzen Funktion funktioniert nicht in Android

msg="\uD83D\uDE0A"; 
msg=msg.replace("\\", "|"); 

Ich verbrachte viel Zeit in Google. Aber habe keine Lösung gefunden.

auch versucht

msg="\uD83D\uDE0A"; 
msg=msg.replace("\", "|"); 
+5

'msg =" \ uD83D \ uDE0A ";' enthält eigentlich keine Backslashes. Das '\ u ####' wird zu einem [Unicode-Zeichen] kompiliert (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#unicode) – khelwood

+0

ya es a Unicode eines lachenden Smilies. Aber gibt es Möglichkeiten, wie in der Frage erwähnt? –

+0

Was versuchst du eigentlich zu tun? Ersetze die Smileys durch einen Pipe-Charakter oder etwas anderes? –

Antwort

4

Die msg String definiert wird, muss auch ein Escape-Zeichen wie folgt verwenden:

msg="\\uD83D\\uDE0A"; 
msg=msg.replace("\\", "|"); 

Dieser Code funktioniert, und es wird zur Folge: |uD83D|uDE0A

+0

i den Eingang controll kippt. –

+1

Was ist, wenn wir mit der gleichen Eingabe in Frage zu tun haben? –

+1

@JarishJose PLZ lesen http://stackoverflow.com/questions/13700333/convert-escaped-unicode-character-back-to-actual-character –

0

Wenn Sie Möchten Sie den Unicode-Integer-Wert eines Unicode-Zeichens anzeigen, können Sie Folgendes tun:

String.format("\\u%04X", ch); 

(oder "|" statt "\\", wenn Sie bevorzugen).

Sie könnten jedes Zeichen in der Zeichenfolge durchlaufen und es in eine literale Zeichenfolge wie "|u####" konvertieren, wenn das was Sie möchten.

0

Von dem, was ich verstehe, möchten Sie die Unicode-Darstellung einer Zeichenfolge abrufen. Dazu können Sie die Antwort von here verwenden.

private static String escapeNonAscii(String str) { 

    StringBuilder retStr = new StringBuilder(); 
    for(int i=0; i<str.length(); i++) { 
    int cp = Character.codePointAt(str, i); 
    int charCount = Character.charCount(cp); 
    if (charCount > 1) { 
     i += charCount - 1; // 2. 
     if (i >= str.length()) { 
     throw new IllegalArgumentException("truncated unexpectedly"); 
     } 
    } 

    if (cp < 128) { 
     retStr.appendCodePoint(cp); 
    } else { 
     retStr.append(String.format("\\u%x", cp)); 
    } 
    } 
    return retStr.toString(); 
} 

Dies gibt Ihnen den Unicode-Wert als eine Zeichenfolge, die Sie dann ersetzen können, wie Sie möchten.