2011-12-14 3 views
7

У меня есть строка, форматированная с экземпляром NumberFormat. Когда я показываю символы строки, у меня есть неразрывное пространство (hexa code: A0 и unicode 160). Как я могу удалить этот символ из моей строки. Я пробовал string = string.replaceAll("\u0160", ""); и string = string.replaceAll("0xA0", ""), оба не работали.String Unicode удалить char из строки

String string = ((JTextField)c)getText(); 
string = string.replace("\u0160", ""); 
System.out.println("string : " string); 

for(int i = 0; i < string.length; i++) { 
System.out.print("char : " + string.charAt(i)); 
System.out.printf("Decimal value %d", (int)string.charAt(i)); 
System.out.println("Code point : " + Character.codePointAt(string, i)); 
} 

Выходной сигнал все еще содержит пустое пространство с десятичным значением 160 и кодовой точкой 160.

+1

Пожалуйста, разместите короткую, но полную программу, которая демонстрирует проблему. Ваш первый подход должен быть хорошим, хотя я бы использовал 'replace', а не' replaceAll', так как вам действительно не нужно regex. –

ответ

39

Юникодный символ \u0160 не является неразрывным. После \ u должно быть шестнадцатеричное представление символа, а не десятичного, поэтому unicode для неразрывного пространства - \u00A0. Пользуйтесь использованием:

string = string.replace("\u00A0",""); 
+1

Alelujah! он работает спасибо. – xtrem06

1

Это работает как есть.

public static void main(String[] args) { 
    String string = "hi\u0160bye"; 
    System.out.println(string); 
    string = string.replaceAll("\u0160", ""); 
    System.out.println(string); 
} 
4
String string = "89774lf&933 k880990"; 

string = string.replaceAll("[^\\d]", ""); 

System.out.println(string); 

ВЫВОД:

89774933880990 

Это устранит все char кроме digits.

+0

Можете ли вы объяснить, почему это не работает, когда я пытаюсь использовать replace или replaceAll? – xtrem06

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