从StringJava中删除所有不可打印字符的最快方法是什么?
到目前为止,我已经尝试并测量了138字节,131个字符的字符串:
replaceAll()- 最慢的方法
replaceAll()
codepointAt()逐个获取代码点并附加到StringBuffer
charAt()逐个获取字符并附加到StringBuffer
char[]缓冲区,charAt()逐个获取字符并填充此缓冲区,然后转换回String
char[]缓冲区 - 旧的和新的,一次获取现有String的所有字符,getChars()逐个迭代旧缓冲区并填充新缓冲区,然后将新缓冲区转换为String - 我自己的最快版本
byte[],getBytes()并指定编码为"utf-8"
byte[]缓冲区的相同内容,但将编码指定为常量Charset.forName("utf-8")
byte[]缓冲区相同的东西,但指定编码为1字节本地编码(几乎没有理智的事情要做)
我最好的尝试如下:
char[] oldChars = new char[s.length()];
s.getChars(0, s.length(), oldChars, 0);
char[] newChars = new char[s.length()];
int newLen = 0;
for (int j = 0; j < s.length(); …Run Code Online (Sandbox Code Playgroud) 我很感激你的帮助,因为我不知道要使用哪个字符范围,或者是否有像[[:cntrl:]]这样的字符类我在ruby中找到了?
通过不可打印的方式,我的意思是当打印输入字符串时删除所有未显示在输出中的字符.请注意,我寻找ac#regex,我的代码没有问题