2011-12-14 10 views
7

Ho una stringa formattata con l'istanza NumberFormat. Quando visualizzo i caratteri della stringa, ho uno spazio non interruttivo (codice hexa: A0 e unicode 160). Come posso rimuovere questo personaggio dalla mia stringa. Ho provato string = string.replaceAll("\u0160", ""); e string = string.replaceAll("0xA0", ""), entrambi non hanno funzionato.String Unicode rimuove char dalla stringa

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

L'uscita contiene ancora uno spazio bianco con valore decimale 160 e codice punto 160.

+1

Si prega di inviare un programma breve ma completo che dimostri il problema. Il tuo primo approccio dovrebbe andare bene, anche se userei 'replace' piuttosto che' replaceAll', dato che in realtà non hai bisogno di un'espressione regolare qui. –

risposta

39

Il carattere unicode \u0160 non è uno spazio continuo. Dopo la \ u ci deve essere la rappresentazione esadecimale del carattere non il decimale, quindi l'unicode per lo spazio non-breaking è \u00A0. Prova a utilizzare:

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

Aleluja! funziona grazie. – xtrem06

1

Ciò sta funzionando così com'è.

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

USCITA:

89774933880990 

si occuperà di eliminare tutte le char diverso digits.

+0

Puoi spiegare perché non funziona quando provo a usare replace o replaceAll? – xtrem06