2010-04-09 34 views
5

Quiero saber cómo reemplazar la cadena en Java.reemplazar caracteres especiales en cadena en java

E.g.

String a = "adf�sdf"; 

¿Cómo puedo reemplazar y evitar caracteres especiales?

+2

Bienvenido a SO, zahi r! ¿De dónde sacas las cuerdas? ¿Usuarios al azar? Un servicio web? ¿Estás tratando de reemplazar algo con esa cuerda, o usar esa cuerda para reemplazar algo más? – Pops

Respuesta

0

Puede usar secuencias de escape unicode (como \u201c [una cita inicial]] para "evitar" caracteres que no se pueden usar directamente en la codificación del archivo fuente (que por defecto es la codificación predeterminada para su plataforma, pero puede cambiarlo con el parámetro -encoding al javac).

+0

la codificación del archivo de origen se establece de manera predeterminada en la codificación predeterminada de la plataforma, es decir, generalmente no es UTF-8. –

+0

@Michael: Gracias, corregido. No solo estaba inventando eso, me pregunto en qué idioma/entorno se relaciona realmente. ;-) O fue cierto en 1996 o algo así ... –

+0

Dudo que, dado que UTF-8 no se especificó hasta 1993, y Java en su lugar solía tener la recomendación de utilizar native2ascii antes de distribuir el código fuente. Aunque esperaría que UTF-8 fuera el predeterminado en algunos sistemas más nuevos. –

14

Usted puede deshacerse de todos los caracteres fuera del printable ASCII range usando String#replaceAll() mediante la sustitución del patrón [^\\x20-\\x7e] con una cadena vacía:

a = a.replaceAll("[^\\x20-\\x7e]", ""); 

Pero esto en realidad no resolver su real problema. Es más una solución. Con la información dada es difícil de concretar la causa raíz de este problema, pero la lectura de cualquiera de esos artículos debe ayudar mucho:

+0

Hmm, parece que hay un error de marcado (el enlace 2 no está correctamente analizado), pero parece que no puedo encontrarlo/arreglarlo. – BalusC

+1

@BalusC: Me sucede todo el tiempo (dado que me enlace mucho con los documentos de Java6), quiere reemplazar el espacio cerca del final con '% 20'. –

+0

@ T.J. sí, eso fue todo, gracias :) Por cierto: Firefox normalmente se escapa de ellos antes de pegar, pero no sucedió correctamente por alguna extraña razón. Recreé el enlace y el problema desapareció. – BalusC

2

Suponiendo, que desea eliminar todos los caracteres especiales, puede usar la clase de caracteres \p{Cntrl} Entonces solo necesita usar el siguiente código:

stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement); 
+0

Eso funciona si supone que "caracteres especiales" significa caracteres de control ASCII. En mi experiencia, generalmente significa puntuación, pero en este caso es una incógnita. –

Cuestiones relacionadas