从Java字符串中删除所有控制字符

从Java字符串中删除所有控制字符,java,regex,Java,Regex,我有一个来自UI的字符串,其中包含控制字符,如换行符和carrage返回 我想这样做: String input = uiString.replaceAll(<regex for all control characters> , "") String input=uiString.replaceAll(,“”) 这肯定是以前做过的 使用,可能比使用完整的正则表达式引擎更有效,当然也更可读 return CharMatcher.JAVA_ISO_CONTROL.removeFro

我有一个来自UI的字符串,其中包含控制字符,如换行符和carrage返回

我想这样做:

String input = uiString.replaceAll(<regex for all control characters> , "")
String input=uiString.replaceAll(,“”)
这肯定是以前做过的

使用,可能比使用完整的正则表达式引擎更有效,当然也更可读

return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);
或者,只使用正则表达式,尽管不那么容易理解或有效

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

像这样的事情应该可以做到:

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

要仅删除ASCII控制字符,请使用

要删除Unicode称为“控制字符”的所有65个字符,请在模式中使用
Cntrl
字符类,并使用
(?U)
标志:

String newString = string.replaceAll("(?U)\\p{Cntrl}", "");
要另外删除unicode“格式”字符(如用于使文本从右向左移动的控制字符,或-也可以取消
Cf
字符类),请执行以下操作:

String newString = string.replaceAll("(?U)\\p{Cntrl}|\\p{Gc=Cf}", "");

不推荐使用GuavaCharMatcher.JAVA\u ISO\u控件,请改用javaIsoControl()

CharMatcher.javaIsoControl().removeFrom(string);

如何删除除回车符、换行符和制表符以外的所有控制字符。如果问题中已经指定了,我可能已经回答了这个问题,但我会使用
CharMatcher.anyOf(“\r\n\t”).removeFrom(string)
。此处显示的
replaceAll
咒语只获取ASCII控制字符;如果您也需要杀死Unicode,请参见;这甚至不包括所有ASCII控制字符;DEL字符(
\u007F
)不在指定的范围内。
CharMatcher.javaIsoControl().removeFrom(string);