2012-01-29 41 views

Respuesta

15

Algo como esto debe hacer el truco:

String newString = oldString.replaceAll("[\u0000-\u001f]", ""); 
+0

-1; esto ni siquiera cubre todos los caracteres de control * ASCII *; el carácter DEL ('\ u007F') no está en el rango que ha especificado. –

21

Usando Guava, probablemente más eficaz que utilizar el motor de expresiones regulares completo, y sin duda más fácil de leer ...

return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string); 

Como alternativa, simplemente usando expresiones regulares, aunque no es tan eficiente o legible ...

return string.replaceAll("\\p{Cntrl}", ""); 
+3

Cómo quitar todos los Char de control Acters excepto ** carriage returns **, ** line feeds ** y ** tabulaciones **. –

+1

Podría haber respondido que si se hubiera especificado en las preguntas, pero lo haría con 'CharMatcher.anyOf (" \ r \ n \ t "). RemoveFrom (string)'. –

+0

No soy Java y no puedo probar fácilmente ahora (lo haré más tarde), pero ¿'\ p {Cntrl}' solo cubre caracteres de control * ASCII * de forma predeterminada? Creo que necesitas construir un objeto de coincidencia y usar el indicador 'UNICODE_CHARACTER_CLASS' en alguna parte para cubrir * todos * los caracteres de control. –

Cuestiones relacionadas