如何从CharSequence中删除“控制字符”?

时间:2012-02-23 16:43:59

标签: java

我有CharSequence source, int start, int end

我想在开始和结束之间从源中删除所有“控制字符”并将其作为新的CharSequence返回

“控制字符”我的意思是不可接受的字符,如Tab和Return,换行等...基本上所有的都是ASCII< 32(空间)......但我不知道如何在这个“现代”中做到这一点

什么是char?它是unicode吗?如何删除这些“控制字符”?

4 个答案:

答案 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);