2012-01-29 12 views

risposta

15

Qualcosa del genere dovrebbe fare il trucco:

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

-1; questo non copre nemmeno tutti i caratteri di controllo * ASCII *; il carattere DEL ('\ u007F') non è compreso nell'intervallo specificato. –

21

Utilizzando Guava, probabilmente più efficiente di utilizzare il motore di piena regex, e certamente più leggibile ...

return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string); 

In alternativa, semplicemente utilizzando espressioni regolari, anche se non così essere letti o in modo efficiente ...

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

Come rimuovere tutti char controllo attori esclusi ** ritorni a capo **, ** feed di riga ** e ** schede **. –

+1

Potrei aver risposto che se fosse stato specificato nelle domande, ma lo farei con 'CharMatcher.anyOf (" \ r \ n \ t "). RemoveFrom (stringa)'. –

+0

Non sono un ragazzo Java e non posso testarlo subito (lo farò dopo), ma non '\ p {Cntrl}' solo i caratteri di controllo * ASCII * per default? Penso che sia necessario costruire un oggetto matcher e usare il flag 'UNICODE_CHARACTER_CLASS' da qualche parte per coprire * tutti * i caratteri di controllo. –

Problemi correlati