我希望能从一个字符串中删除所有的不可打印ASCII字符,同时保留不可见字符。我认为这会奏效,因为空格、\n和\r是不可见字符但不是不可打印字符?
基本上,我得到了一个带有�字符的字节数组,我不希望它们存在于其中。所以我正在尝试将其转换为字符串,在再次将其用作字节数组之前删除�字符。现在我的代码可以正常处理空格,但\r和\n不能正常工作。应该使用什么正则表达式来保留它们?或者有比我做的更好的方法吗?
public void write(byte[] bytes, int offset, int count) {
try {
String str = new String(bytes, "ASCII");
str2 = str.replaceAll("[^\\p{Print}\\t\\n]", "");
GraphicsTerminalActivity.sendOverSerial(str2.getBytes("ASCII"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return;
}
}
编辑:我尝试了[^\x00-\x7F],这是ascii字符的范围...但是那些 � 符号仍然可以通过,很奇怪。
od -t u1
进行管道传输。 - Jens Erat