我有一个来自UI的字符串,其中包含控制字符,例如换行符和回车。
我想做这样的事情:
String input = uiString.replaceAll(<regex for all control characters> , "")
以前这已经做过了!?
答案 0 :(得分:24)
使用Guava,可能比使用完整的正则表达式引擎效率更高,而且更具可读性......
return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);
或者,只是使用正则表达式,尽管不是那么可读或有效......
return string.replaceAll("\\p{Cntrl}", "");
答案 1 :(得分:15)
这样的事情可以解决问题:
String newString = oldString.replaceAll("[\u0000-\u001f]", "");
答案 2 :(得分:4)
要仅删除ASCII控制字符,请使用Cntrl
character class
String newString = string.replaceAll("\\p{Cntrl}", "");
要删除Unicode称为“控制字符”的所有65个字符,请在UNICODE_CHARACTER_CLASS
模式下使用Cntrl
字符类,并带有(?U)
标志:
String newString = string.replaceAll("(?U)\\p{Cntrl}", "");
要另外删除unicode“格式”字符(如使文本从右到左的控制字符或soft hyphen之类的东西),也请破坏Cf
字符类:
String newString = string.replaceAll("(?U)\\p{Cntrl}|\\p{Gc=Cf}", "");
答案 3 :(得分:0)
不推荐使用 Guava CharMatcher.JAVA_ISO_CONTROL,请改用 javaIsoControl():
CharMatcher.javaIsoControl().removeFrom(string);