java正则表达式以删除所有不可打印字符
我希望从字符串中删除所有不可打印的ascii字符,同时保留不可见的字符。我认为这会起作用,因为空白\n\r是不可见字符,但不可打印? 基本上,我得到了一个字节数组� 角色在里面,我不想让他们在里面。因此,我试图将其转换为字符串,删除� 再次将其用作字节数组之前的字符
空格现在在我的代码中可以正常工作,但是现在\r\n和\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字符的范围。。。。但是后来� 奇怪的是,符号仍然可以通过
# 1 楼答案
以下正则表达式将仅匹配可打印文本
以下正则表达式将查找不可打印的字符
Jave代码:
# 2 楼答案
在这里,我更喜欢一个更简单的解决方案。顺便说一句,您忽略了偏移量和计数。下面的解决方案将覆盖原始阵列