我正在寻找一种快速简便的方法,用适当的unicode符号替换Ascii控制字符,以便记录这些字符。
示例:
我的输入是一个已知长度的字节数组。我目前使用new String(byData, 0, nLength, StandardCharsets.US_ASCII).replaceAll("\\W", "�");
,但这正在删除回车(␍)等有用信息。
我知道我可以手动对32个控制字符中的每一个进行查找和替换,但我认为必须有更好更快的方法。
我的项目安装了番石榴,所以如果有一些番石榴魔法,请告诉我。
我使用的是Java 7 / Android。
答案 0 :(得分:1)
手动循环可能是您最好的选择:
String s = new String(byData, 0, nLength, StandardCharsets.US_ASCII);
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.length(); i++) {
int ch = (int) sb.charAt(i);
if ((cp < 32) && (ch != 9) && (ch != 10) && (ch != 13)) {
sb.setCharAt(i, (char)(0x2400 + ch));
}
}
s = sb.toString();