我有CharSequence source, int start, int end
我想在开始和结束之间从源中删除所有“控制字符”并将其作为新的CharSequence返回
“控制字符”我的意思是不可接受的字符,如Tab和Return,换行等...基本上所有的都是ASCII< 32(空间)......但我不知道如何在这个“现代”中做到这一点
什么是char
?它是unicode吗?如何删除这些“控制字符”?
答案 0 :(得分:2)
您可以使用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()
答案 1 :(得分:1)
假设您可以将整个源存入内存,您可以这样做:
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;
答案 2 :(得分:1)
使用Character.isISOControl(char)。
是char是Unicode。
答案 3 :(得分:1)
使用Guava的CharMatcher
:
return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);