我在Java应用程序中向标准输出打印了一些宽UTF-8范围的字符。我的控制台配置为支持UTF-8。我的问题是,有时候,当我决定打印10个字符时,我会看到一些小于10的字符。
我认为这是由于控制台解释了一些字符。是否有一些unicode字符可以解释为:擦除前一个字符?是否可以将它们从输出中排除(这些字符的代码点是什么)?
答案 0 :(得分:1)
使用回车符或退格符可以获得您描述的结果。这个小测试程序例如......
public class Test {
public static void main(String... args) {
System.out.println("abc\rdef\u0008g");
}
}
...在我的终端(ubuntu)中打印
$ java Test
deg
$
\r
是回车符,\u0008
表示退格符。 (回车将光标发送回第一列,退格键将其发回一列。)
要删除所有这些,所谓的“控制字符”,您可以这样做:
myString = myString.replaceAll("\\p{Cntrl}", "");
来自the docs:
\p{Cntrl}
控制字符:[\ x00- \ x1F \ x7F]
答案 1 :(得分:0)
明显的是backspace