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

5

我有一个CharSequence source, int start, int end

我想要从起始点到终止点之间的source中去除所有的"控制字符",并将其作为新的CharSequence返回。

所谓的"控制字符"指的是不需要的字符,如制表符、回车符、换行符等...基本上是在ASCII中小于32(空格)的所有字符...但我不知道如何在这个"现代时代"中做到这一点。

什么是char?它是Unicode吗?我该如何去除这些"控制字符"?


你有检查过这个吗:https://dev59.com/CG855IYBdhLWcg3wik-D - assylias
使用 String#replaceAll() - Matt Ball
4个回答

2

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;

这与控制字符有什么关系? - Highland Mark
1
@HighlandMark OP 所称的“控制字符”通常被称为“空格”(我所说的“控制字符”是指像制表符、回车、换行等不受欢迎的字符……);replaceAll()函数从字符串的开头和结尾删除所有此类字符。 - Sergey Kalinichenko
将CharSequence转换为String将删除任何特殊格式(例如加粗的字符)。 - Aaron

1

如果使用最新的Guava库,请使用Character.isISOControl(char)
是的,char是Unicode。


1

使用Guava的CharMatcher

return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);

示例在最新的Guava库中无法编译。 - speksy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接