Pau*_*aul 7 java regex android
我希望从字符串中删除所有不可打印的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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我试过[^\x00-\x7F]这是ascii字符的范围....但是然后 符号仍然通过,很奇怪.
abc*_*123 10
以下正则表达式仅匹配可打印文本
[^\x00\x08\x0B\x0C\x0E-\x1F]*
Run Code Online (Sandbox Code Playgroud)
以下正则表达式将找到不可打印的字符
[\x00\x08\x0B\x0C\x0E-\x1F]
Run Code Online (Sandbox Code Playgroud)
Jave代码:
boolean foundMatch = false;
try {
Pattern regex = Pattern.compile("[\\x00\\x08\\x0B\\x0C\\x0E-\\x1F]");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();
//Relace the found text with whatever you want
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20890 次 |
最近记录: |