我在puts
和gets
结束时自动了解\ n,以及如何处理这些,但有没有办法保持显示点('光标位置') ,如果你愿意)在点击输入gets
e.g。
print 'Hello, my name is '
a = gets.chomp
print ', what's your name?'
最终看起来像
你好,我的名字是耶利米,你叫什么名字?
答案 0 :(得分:7)
您可以使用(记录很少)getch
:
require 'io/console'
require 'io/wait'
loop do
chars = STDIN.getch
chars << STDIN.getch while STDIN.ready? # Process multi-char paste
break if ["\r", "\n", "\r\n"].include?(chars)
STDOUT.print chars
end
参考文献:
相关的后续问题:
enter & IOError: byte oriented read for character buffered IO
答案 1 :(得分:0)
也许我错过了一些东西,但'gets.chomp'工作正常,不是吗?要做你想做的事,你必须逃避撇号或使用双引号,你需要包括用户在打印的字符串中输入的内容:
print 'Hello, my name is '
a = gets.chomp
print "#{a}, what's your name?"
# => Hello, my name is Jeremiah, what's your name?
适合我。 (编辑:在TextMate中工作,而不是终端)
否则,你可以做这样的事情,但我意识到这不是你所要求的:
puts "Enter name"
a = gets.chomp
puts "Hello, my name is #{a}, what's your name?"