我在 Java 应用程序中将宽 UTF-8 范围内的一些字符打印到标准输出。我的控制台配置为支持 UTF-8。我的问题是,有时,当我决定打印 10 个字符时,我会看到一些字符少于 10 个。
我认为这是由于控制台解释了一些字符。是否有一些 unicode 字符可以解释为:删除前一个字符?是否可以将它们从输出中排除(这些字符的代码点是什么)?
最佳答案
使用回车或退格字符,您可以获得您所描述的结果。例如这个小测试程序......
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}
A control character: [\x00-\x1F\x7F]
关于java - Unicode 和控制台解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015592/