gets.chomp没有移动到新的行

时间:2014-01-14 06:36:13

标签: ruby newline gets

我在putsgets结束时自动了解\ n,以及如何处理这些,但有没有办法保持显示点('光标位置') ,如果你愿意)在点击输入gets

的输入后移动到新的一行

e.g。

print 'Hello, my name is '
a = gets.chomp
print ', what's your name?'

最终看起来像

你好,我的名字是耶利米,你叫什么名字?

2 个答案:

答案 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?"