2013-07-16 33 views
-3

我寫了這個:紅寶石 - 「獲取」增加換行符

print "Enter your name:" 
name = gets 
puts "Hello #{name}. Please to meet you." 

,結果是這樣的:

Hello Moemen 
. Pleased to meet you 
  • 爲什麼字符串的其餘變量後繼續在另一行?我希望它是"Hello Moemen. Pleased to meet you."我錯過了什麼嗎?

  • 我使用的是崇高的文本2,我無法獲得gets方法讓我輸入數據;它只是在控制檯中輸出結果而不給我輸入任何內容的機會。任何想法?

+0

對於你的第二個問題,這可能是因爲'gets'從'stdin'中拉出來的,其中崇高的文本2可能不會流入程序。也許查找如何獲得互動模式/ stdin工作在崇高 –

+0

相關問題:http://stackoverflow.com/questions/6432524/why-does-rubys-gets-includes-the-closing-newline –

+0

也相關:http ://stackoverflow.com/questions/17437814/ruby-stdin-gets-return-nil-directly-while-running-in-sublime-text2 –

回答

6

當您使用gets,輸入將要跟着一個換行符,所以你需要打印出來之前剝離的換行符。

print "Enter your name:" 
name = gets.chomp 
puts "Hello #{name}. Pleased to meet you." 

這應該可以解決您的問題。

+0

謝謝大家。請關閉該問題。我得到了我需要的一切 –

1

您報告的內容不會發生。這不可能是真的。當您收到gets的字符串時,可能會收到類似"Moemen\n"的字符串。由於輸入由"\n"分隔,因此字符串在末尾處具有該輸入。當插值到"Hello #{name}. Please to meet you.",你會得到:

Hello Moemen 
. Please to meet you. 

但不

Hello Moemen 
. Pleased to meet you 

爲您報道。那不會發生。

爲了獲得"Hello Moemen. Pleased to meet you.",您需要將字符串更改爲"Hello #{name.chomp}. Pleased to meet you."