我有一个CharSequence source, int start, int end
我想要从起始点到终止点之间的source中去除所有的"控制字符",并将其作为新的CharSequence返回。
所谓的"控制字符"指的是不需要的字符,如制表符、回车符、换行符等...基本上是在ASCII中小于32(空格)的所有字符...但我不知道如何在这个"现代时代"中做到这一点。
什么是char
?它是Unicode吗?我该如何去除这些"控制字符"?
我有一个CharSequence source, int start, int end
我想要从起始点到终止点之间的source中去除所有的"控制字符",并将其作为新的CharSequence返回。
所谓的"控制字符"指的是不需要的字符,如制表符、回车符、换行符等...基本上是在ASCII中小于32(空格)的所有字符...但我不知道如何在这个"现代时代"中做到这一点。
什么是char
?它是Unicode吗?我该如何去除这些"控制字符"?
CharSequence.subSequence(int, int)
和 String.replaceAll(String, String)
:source.subSequence(0, start).toString() + source.subSequence(start, end).toString().replaceAll("\\p{Cntrl}", "") + source.subSequence(end, source.length()).toString()
String tmp = source.toString();
String prefix = tmp.substring(0, start-1);
String suffix = tmp.substring(end+1);
String middle = tmp.substring(start, end).replaceAll("\\s", "");
CharSequence res = prefix + middle + suffix;
replaceAll()
函数从字符串的开头和结尾删除所有此类字符。 - Sergey Kalinichenko如果使用最新的Guava库,请使用Character.isISOControl(char)
。
是的,char是Unicode。
使用Guava的CharMatcher
:
return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);
String#replaceAll()
。 - Matt Ball