Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java退格转义_Java_Escaping - Fatal编程技术网

Java退格转义

Java退格转义,java,escaping,Java,Escaping,我刚刚测试了退格转义,如下所示: System.out.println("Hello\b"); 我希望得到输出:见鬼 但它是“你好”和一个方块 有人知道java是如何处理这个字符的吗?java根本不“处理”这个字符。它所知道的只是一个字节流,操作系统说它可以在这个字节流上写入字节,它会很高兴地将字节写入其中,包括一个ASCII退格 当流接收到该字符时会发生什么与Java无关,它完全依赖于终端。一些终端将擦除上一个字符,一些终端将退格字符显示为一些奇怪的标志符号,甚至显示为一个特殊的“退格字符”

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

System.out.println("Hello\b");
我希望得到输出:见鬼
但它是“你好”和一个方块


有人知道java是如何处理这个字符的吗?

java根本不“处理”这个字符。它所知道的只是一个字节流,操作系统说它可以在这个字节流上写入字节,它会很高兴地将字节写入其中,包括一个ASCII退格


当流接收到该字符时会发生什么与Java无关,它完全依赖于终端。一些终端将擦除上一个字符,一些终端将退格字符显示为一些奇怪的标志符号,甚至显示为一个特殊的“退格字符”标志符号。有些人可能会在无法解释字符的情况下完全删除该字符,而其他人(事实上,大多数终端仿真器)的行为会因配置方式的不同而有所不同。但这些都与java无关,它们将以java或Perl < C++ >打印< /COD>或C++<代码> CUT<代码>或其他任何方式来运行。

< P>在Windows命令控制台中它应该工作得很好。此错误可识别为Eclipse错误:。另请参见

您使用的是System.out.println(“…”),它本质上是System.out.print(“…\n”)


不要使用.println,您只是删除换行符…

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

System.out.println("Hello\b ");

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

尝试使用终端来执行类文件

 java classname

当IDE执行\b时,它将自动忽略它。因为IDE中没有相应的库可运行\b。然而,若您在终端中运行它们,它就可以被执行。所有终端都有该库。

您可能需要编写一个函数来执行此操作:

def static public String backspace (String str){
    return str.substring(0,str.length-1)
}

谢谢,但它在windows控制台中仍然不起作用。你在你的机器上试过了吗。可能是我的系统问题。我在Windows控制台中使用过(回车不换行),它工作正常。我用它来显示“正在处理的NN%”更改文本。在这种情况下,println(“Hello\b”)将发出“Hello\b\n”而不是“Hello\n\b”。这并不能解释符号。@StackOverflowException-输出的原因已经由Kilian Foth解释过了。您的操作系统必须与Windows和Ubuntu不同。