1
A
回答
2
1
这将在Terminal.app工作,但在Mac OS X Lion的每行1个字符是在退出清除。我认为这是Terminal.app的一个错误。
CR = "\r"
CLEAR = "\e[0J"
RESET = CR + CLEAR
lines_count = 3
3.times do |i|
puts "First line #{i}"
puts "Second line #{i}"
puts "Third line #{i}"
sleep(1)
$stdout.flush
lines_count.times do
print "\e[1F"
print "\e[1K"
end
end
print "\e[#{lines_count}E"
1
你可以使用使用curses来处理你的输出但这很可能是矫枉过正,简单的东西是这样的。
通常的方法是打印出一堆退格,将输出光标重新定位在最后一个字符串的开头;请注意,"\b"
不一定会覆盖任何内容,因此您必须用空格来覆盖结尾以保证安全。事情是这样的:
messages = [
'Professionally simplify seamless systems with prospective benefits.',
'Dramatically cultivate worldwide testing procedures for robust potentialities.',
'Intrinsicly provide access to future-proof testing procedures after superior supply chains.',
'Globally matrix multidisciplinary outsourcing vis-a-vis distributed paradigms.',
'Compellingly fashion visionary content via functionalized web services.',
'Phosfluorescently e-enable e-markets rather than internal or "organic" sources.'
]
reposition = ''
clear_the_end = ''
(0 ... messages.length).each do |i|
if(i > 0)
clear_the_end = ' ' * [0, messages[i - 1].length - messages[i].length].max
end
$stdout.syswrite(reposition + messages[i] + clear_the_end)
reposition = "\b" * (messages[i].length + clear_the_end.length)
sleep 1
end
puts
你要使用syswrite
避免缓冲和平常"\n"
是puts
追加。这种事情应该在你可能遇到的任何终端中工作。
您也可以使用回车("\r"
),而不是一堆退格的:
# `reposition = "\b" * (messages[i].length + clear_the_end.length)` becomes
resposition = "\r"
但你仍然需要所有的clear_the_end
摆弄,以确保您覆盖所有的最后一行。
相关问题
- 1. 打印多行字符串
- 2. Ruby在同一行上多次打印
- 3. 该字符串打印多少次?
- 4. 在循环的同一行上打印多个字符串
- 5. python在多行上打印字符串
- 6. C++字符串在多行上打印
- 7. 打印字符多次
- 8. 如何在Python中的同一行上打印多行字符串
- 9. 打印出同一行多次
- 10. 打印多少次在一个字符串
- 11. 并排打印多行字符串
- 12. 打印相同的行多次在Perl
- 13. 如何在消息框中打印多行字符串?
- 14. 如何在同一行中打印3个字符串?
- 15. 如何在input()函数的同一行上打印字符串?
- 16. 如何将多行字符串打印到blob中?
- 17. 如何用`putStrLn`打印多行字符串?
- 18. 巴什 - 如何打印多行字符串(以“\ n”)用printf
- 19. 如何打印多行字符串参数的每个元素?
- 20. 如何在一行上一次打印一个字符?
- 21. 如何一次打印多个项目
- 22. 多awk来在同一行打印
- 23. 如何格式化JLabel以在多行上打印出一个字符串?
- 24. 如何在java中一个接一个地打印字符串
- 25. 如何在字符串中打印两个或多个相同的字母?
- 26. 如何让Python在同一行上一次打印一个字符?
- 27. 如何在R中打印多行字符变量的行号?
- 28. 如何只打印一次字符串中的每个字母
- 29. 如何一次处理多行字符串行
- 30. 在一个文件中找到一个字符串并为多行打印行
添加期望的输入和期望的输出的例子,不能说我能理解你在这里寻找什么。 –
@Mauricio:检查纳什的答案。这是我想要达到的行为。我希望能够使用'\ r',它可以做我想要的一条线,而且它更干净。如果您可以提出更好的答案,请添加新答案。 – Nerian