Java退格逃脱

Alf*_*red 15 java escaping

我刚刚测试了退格转义,如下所示:

System.out.println("Hello\b");
Run Code Online (Sandbox Code Playgroud)

我希望得到输出:地狱
但它是:"你好"的方块

有谁知道java如何处理这个?

Kil*_*oth 23

Java根本不会"处理"该角色.所有它知道的是一个字节流,操作系统说它可以写入字节,并且很乐意将字节写入其中,包括ASCII退格.

什么情况发生时,流接收字符并没有任何关系用java做的,这是完全与终端相关的.有些终端会删除前一个字符,有些终端会将退格字符显示为一些奇怪的字形,甚至是一个特殊的"退格字符"字形.有些人可能会完全放弃角色,如果他们无法解释它,其他人(实际上大多数终端模拟器)将根据他们的配置方式而有所不同.但这一切都与Java无关,无论是用Java还是用Perl print或C++ cout或其他任何东西写的,它们都会表现得那样.


Sah*_*bra 7

要获得所需的输出,即Hell您需要在space后面添加一个字符\b。因为\b只会将光标(虚拟)移到1个位置,但不会删除它。您所能做的就是替换要删除的字符space。因此,尝试以下行Hell作为输出:

System.out.println("Hello\b ");
Run Code Online (Sandbox Code Playgroud)

PS:此解决方案可在Windows OS和Ubuntu OS上使用。对于其他操作系统,其行为可能与上面@Kilian Foth所解释的不同。