我将字节接收到一个方法中,我想通过串行发送它们,但我只想发送有效字节,(即 a-zA-Z0-9"!£$%^&*()-_=+),东西像那样,空格,换行符等。我只想过滤掉任何字符,例如带有重音符号或�的字符,以任意顺序和任意次数。
这样的事情会包括所有角色的|
工作吗?
^[a-z|A-Z|0-9|\\s|-<other characters>]*
或者,正确的表达方式是什么?
因此,如果一个字符串包含“exit����”,我只想发送“exit”,绝不发送无效字符,而是发送其他所有字符。
public void write(byte[] bytes, int offset, int count) {
String str;
try {
str = new String(bytes, "ASCII");
Log.d(TAG, "data received in write: " +str );
//^[a-z|A-Z|0-9|\s|-]*
//test here, call next line on any character that is valid
GraphicsTerminalActivity.sendOverSerial(str.getBytes("ASCII"));
} catch (UnsupportedEncodingException e) {
Log.d(TAG, "exception" );
e.printStackTrace();
}
// appendToEmulator(bytes, 0, bytes.length);
}
编辑:我试过 [^\x00-\x7F] 这是 ascii 字符的范围....但是符号仍然通过,很奇怪。