繁体   English   中英

gets.chomp没有移动到新的行

[英]gets.chomp without moving to a new line

我理解在putsgets结束时自动完成的,以及如何处理这些,但有没有办法保持显示点(“光标位置”,如果你愿意)从移动到新线击中输入输入与后gets

例如

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

最终看起来像

你好,我叫Jeremiah,你叫什么名字?

你可以通过使用(记录很少的) 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:字符缓冲IO的字节读取

也许我错过了一些东西,但'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?"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM