2015-06-08 22 views
6

Tôi đã sử dụng mã sau để thay thế sự xuất hiện của '\' nhưng nó không hoạt động.Chức năng thay thế chuỗi không hoạt động trong android

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

Tôi đã dành rất nhiều thời gian trong Google. Nhưng không tìm thấy giải pháp nào.

Cũng cố gắng

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

'msg =" \ uD83D \ uDE0A ";' không thực sự chứa bất kỳ dấu gạch chéo ngược nào. '\ U ####' được biên dịch thành [ký tự unicode] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#unicode) – khelwood

+0

ya unicode cười cười. Nhưng liệu có bất kỳ lựa chọn nào để làm như đã đề cập trong câu hỏi không? –

+0

Bạn đang cố gắng làm gì - thay thế các biểu tượng mặt cười bằng ký tự ống, hoặc cái gì khác? –

Trả lời

4

Các msg chuỗi định nghĩa cũng phải sử dụng một ký tự thoát ra như thế này:

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

Đó là mã sẽ làm việc và nó sẽ gây ra: |uD83D|uDE0A

+0

Tôi không thể kiểm soát đầu vào. –

+1

nếu chúng ta muốn làm gì với cùng một đầu vào được đề cập trong câu hỏi? –

+1

@JarishJose plz đọc http://stackoverflow.com/questions/13700333/convert-escaped-unicode-character-back-to-actual-character –

0

Nếu bạn muốn hiển thị giá trị số nguyên unicode của ký tự unicode, bạn có thể làm như sau:

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

(hoặc sử dụng "|" thay vì "\\" nếu bạn muốn).

Bạn có thể xem từng ký tự trong chuỗi và chuyển đổi nó thành chuỗi ký tự như "|u####" nếu đó là những gì bạn muốn.

0

Từ những gì tôi hiểu, bạn muốn có được biểu diễn unicode của một chuỗi. Để làm điều đó bạn có thể sử dụng câu trả lời từ here.

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(); 
} 

Điều này sẽ cung cấp cho bạn giá trị unicode dưới dạng Chuỗi mà bạn có thể thay thế theo ý muốn.

Các vấn đề liên quan