2011-12-14 21 views
7

Mam ciąg sformatowany z instancją NumberFormat. Kiedy wyświetlaję znaki ciągu, mam spacje nierozdzielające (kod szesnastkowy: A0 i unicode 160). Jak mogę usunąć ten znak z mojego ciągu znaków. Próbowałem string = string.replaceAll("\u0160", ""); i string = string.replaceAll("0xA0", ""), oba nie działały.String Unicode usuwa char z ciągu znaków

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

Wyjście nadal zawiera spacje z wartością dziesiętną 160 i kod punktu 160.

+1

Proszę napisać krótki, ale kompletny program demonstrujący problem. Twoje pierwsze podejście powinno być w porządku, chociaż użyłbym 'replace' zamiast' replaceAll', ponieważ naprawdę nie potrzebujesz tutaj wyrażeń regularnych. –

Odpowiedz

39

Znak Unicode \u0160 nie jest spacją nierozdzielającą. Po \ u musi być szesnastkowa reprezentacja znaku, a nie dziesiętnej, tak więc unicode dla nierozdzielającej się przestrzeni to \u00A0. Spróbuj użyć:

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

Alelujah! działa dzięki. – xtrem06

1

To działa jak jest.

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

WYJŚCIE:

89774933880990 

To wyeliminuje wszystkie char inny niż digits.

+0

Czy możesz wyjaśnić, dlaczego to nie działa, gdy próbuję użyć Zamień lub Zamień wszystko? – xtrem06

Powiązane problemy