2015-10-27 2 views
0

Я хочу заменить «\ u0023 \ u0024 ab» с: «\\ u0023 \\ u0024 ab», чтобы сохранить его кодировку перед сохранением в базе данных.Как манипулировать символами юникода в java

Там может меня много различных значений после \ U, а не только 0023, 0024.

Я попытался с помощью str.replace ("\" \\ ") или (" \ и "" \\ и «), но он не работает в Java, потому что он лечит \ u0023 как один символ.

Любые предложения, как добиться этого?

Я попытался как этот

public class test { 
    public static void main(String args[]) { 
     String s = "\u0023";  
     s = s.replace("\\", "\\\\"); 
     System.out.println(s); 
    } 
} 

but it is giving following output as: 
# 

but I am expecting: 
\\u0023 
+1

Нет никакой разницы между обоими ... –

+1

Если ваша исходная строка '' \ u0023 \ u0023 ab "', вхождения '\ u0023' * являются * одним символом, а именно' # '. Поэтому ваша исходная строка '' # # ab "' ... – Holger

+0

Возможный дубликат [Заменить # с помощью \ u0023 в строке Java] (http://stackoverflow.com/questions/11791077/replace-with-u0023-in-a -java-string) – malaguna

ответ

0
String s = "\\u0023";  
s = s.replace("\\", "\\\\"); 
+0

В его случае: '' \ u0023 \ u0023 ab ".replaceAll (" \ u0023 "," \\\\ u0023 ")' – k4yaman

+1

Просто введите свой код с четырьмя пробелами. – Holger

+1

Чтобы избежать проблем с '' '' '' и '<...>' просто разместите свой код как 'code sample' (используйте кнопку' {} 'в меню редакторов). Не отправляйте текст в виде изображения. – Pshemo

1

По словам первого ответа here, вы можете получить (числовое) Юникода значение символа с:

// works up to Unicode 3.0 
String hexString = Integer.toHexString(s | 0x10000).substring(1); 

Используя этот номер, просто распечатать его:

System.out.println("\u" + hexString); 

(Примечание: код не проверен: дайте мне обратную связь, если он не работает)

Надеюсь, это поможет!

Смежные вопросы