2011-12-14 19 views
7

Tengo una cadena formateada con la instancia NumberFormat. Cuando visualizo los caracteres de la cadena tengo un espacio sin interrupciones (código hexa: A0 y unicode 160). ¿Cómo puedo eliminar este personaje de mi cadena? Intenté string = string.replaceAll("\u0160", ""); y string = string.replaceAll("0xA0", ""), ambos no funcionaron.Cadena Unicode eliminar char de la cadena

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

La salida todavía contiene un espacio en blanco con el valor decimal 160 y código de punto 160.

+1

Por favor, publique un programa breve pero completo que demuestre el problema. Tu primer acercamiento debería estar bien, aunque usaría 'replace' en lugar de' replaceAll', ya que realmente no necesitas una expresión regular aquí. –

Respuesta

39

El carácter Unicode \u0160 no es un espacio sin interrupciones. Después de \ u, debe haber una representación hexadecimal del carácter, no el decimal, por lo que el unicode para el espacio sin interrupción es \u00A0. Intente utilizar:

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

Aleluya! funciona gracias – xtrem06

1

Esto está funcionando como es.

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

SALIDA:

89774933880990 

que eliminará todo el char que no sea digits.

+0

¿Puede explicar por qué no funciona cuando trato de reemplazar o reemplazar todo? – xtrem06