J将回车换成换行符

时间:2015-06-07 15:04:20

标签: console-application carriage-return j

我正在尝试为命令行应用程序实现进度条,例如

[#####     ] 50% complete

我知道我可以退回到行的开头并覆盖,但这看起来很糟糕。我宁愿使用回车键将光标放在第一列,然后覆盖。

问题是J引擎似乎不呈现回车符,而是呈现换行符+回车符。

以下是我的尝试:

echo 'hi',(10{a.),'world'(其中10{a.是ASCII 10,即回车),打印

hi
world

echo 'hi',(13{a.),'world'(换行符)打印

hi
world

shell 'printf "%s\r%s" hi world'打印

hi
world

shell 'printf "%s\n%s" hi world'打印

hi
  world

最后,我在JHS中尝试了以上所有内容而不是Jconsole,结果相同。

由此可见三件事:

  1. J前端将回车符转回回车+换行符。
  2. J前端还处理外部(例如printf)生成的回车换行符。
  3. J 自行识别换行符,如上一个示例所示。
  4. 任何帮助?

1 个答案:

答案 0 :(得分:5)

丑陋但有效:

   0$ stdout shell 'printf "99 problems\rno"'
no problems

更新 - 减少50%!

可以避免从shell调用printf

   0$stdout 'hi world',(13{a.),'12'
12 world

更新 - 减少75%的丑陋!

感谢@Eelvex的评论

   0$stdout 'hi world',CR,'12'
12 world