我希望从字符串中删除所有不可打印的 ascii 字符,同时保留不可见的字符。我认为这会起作用,因为空格 \n \r 是不可见字符但不是不可打印的?基本上我得到了一个带有�字符的字节数组,我不希望它们在其中。所以我试图将其转换为字符串,在再次将其用作字节数组之前删除�字符。
Space 现在在我的代码中可以正常工作,但是现在 \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 字符的范围....但是符号仍然通过,很奇怪。