【发布时间】:2012-05-21 15:20:40
【问题描述】:
我希望我的程序能够擦除它打印的所有文本。每次它打印一些东西时,我都会调用我的print() 方法而不是System.out.print(),但是当我调用erase() 方法时,它似乎在Windows 7 控制台中没有做任何事情。我不知道发生了什么;我单独进行了一项测试,确认\b 确实会擦除字符,但无论出于何种原因,它在erase() 中都不起作用。退格字符是相互擦除还是什么?
编辑:我进行了更多测试。看起来 \b 不会覆盖换行符。所以我想我需要一种方法来做到这一点。
public static int textLength = 0;
public static void erase() {
for (int i = 0; i < textLength; i++) {
System.out.print('\b');
}
textLength = 0;
}
public static void print(String s) {
textLength += s.length();
System.out.print(s);
}
【问题讨论】:
-
如果可能的话,您应该注入实际用于打印输出的内容。为了您的擦除,您是在尝试擦除“输入”的内容,还是您基本上是在编写自己的控制台?
-
我不是在编写自己的控制台,而是在使用 Windows 控制台。程序打印的所有内容都将其长度添加到 textLength,然后在正确的时间打印该数量的退格字符,这应该会删除所有内容。
标签: java windows console escaping character