J 将回车 return 变成换行符
J turns carriage return into newline
我正在尝试为命令行应用程序实现进度条,例如
[##### ] 50% complete
我知道我可以退格到行首并覆盖,但这看起来太恶心了。我宁愿使用回车 return 将光标放在第一列,然后 然后 覆盖。
问题是 J 引擎似乎不渲染回车 return 字符,而是渲染换行符+回车 return.
这是我尝试过的:
echo 'hi',(10{a.),'world'
(其中 10{a.
是 ASCII 10,即回车符 return)打印出
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 中尝试了上述所有方法,结果相同。
由此可见三点:
- J前端把回车return变成回车return+换行
- J 前端还将外部生成的回车符 return 处理为换行符。
- 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
我正在尝试为命令行应用程序实现进度条,例如
[##### ] 50% complete
我知道我可以退格到行首并覆盖,但这看起来太恶心了。我宁愿使用回车 return 将光标放在第一列,然后 然后 覆盖。
问题是 J 引擎似乎不渲染回车 return 字符,而是渲染换行符+回车 return.
这是我尝试过的:
echo 'hi',(10{a.),'world'
(其中 10{a.
是 ASCII 10,即回车符 return)打印出
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 中尝试了上述所有方法,结果相同。
由此可见三点:
- J前端把回车return变成回车return+换行
- J 前端还将外部生成的回车符 return 处理为换行符。
- 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