非表示のASCII文字を保持しながら、印刷できない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;
}
}
編集: ascii 文字の範囲である [^\x00-\x7F] を試しましたが、それでも � 記号が通過します。