console-application - J 将回车符转换为换行符

标签 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 确实能够自行识别换行符,如上一个示例所示。

有什么帮助吗?

最佳答案

丑陋但有效:

   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

关于console-application - J 将回车符转换为换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695041/

相关文章:

.net - Log4Net 配置问题

c# - 使用c#从一个csv文件中按值拆分多个csv文件

newline - 什么是回车、换行和换页?

regex - 为什么换行符在查找中起作用,而回车符在替换为新行中起作用?

refactoring - 如何在 J 中重构它?

J语言: the good part (anyone plan to write a book on it?)

scala - SBT、println 和 Scala 控制台应用程序的奇怪问题

Java 命令太长而无法运行

xcode - 回车与 XCode 不一致

grammar - J 编程语言 (E)BNF