使用控制台字符擦除多个控制台行

时间:2014-07-14 15:41:48

标签: java python ascii console-application control-characters

所以我知道使用控制台字符可以将光标返回到当前行的开头(\r),或只返回一个字符(\b)进行覆盖。我想知道的是我用控制字符覆盖了多行。

我有一个点网格,打印到控制台:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

然后回到第一个角色并重新绘制

. . . . . . . .
. . . 0 . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

不确定这将使用哪种语言,这就是为什么我更喜欢使用解决方案来使用字符。

1 个答案:

答案 0 :(得分:0)

(以下所有内容仅适用于您未在Swing JPanel或类似内容中自行渲染输出的情况)

请注意,您可以从控制台输出单元获得的仿真级别非常有限。通常,您可以期望Ctrl-H退格,而Ctrl-M则将光标返回到行的开头。除此之外的任何东西都会产生额外的要求。

历史上,这是通过发送ANSI转义序列(物理VT100终端的近亲)来完成的,然后将其解释为移动光标,清除监视器的部分并切换颜色。在输出设备中,您将需要类似的功能。对于Windows中的CMD.EXE,请参阅How to make win32 console recognize ANSI/VT100 escape sequences?以获取建议。 Linux和OS X终端仿真器支持此功能。

然后,您可以自己生成转义序列 - 这对于简单的需求来说相对容易 - 或者委托给curses / ncurses库,以实现您的需要。