Как получить несколько абзацев от пользователя в Ruby2.6.3? - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь получить несколько абзацев одновременно от пользователя.

Я пытался использовать get, но, похоже, он не работает ... он отбрасывает второй абзац:

#The code:
   print("Paste your text here: ") 
.. essay = gets 
.. puts(essay)

# Getting user imput (the second sentance is a separate paragraph)
Paste your text here:  I like cake.
 It makes me happy.

# What the computer did for puts(essay):
I like cake.
=> nil

Я ожидал, что результат будет примерно таким:

"I like cake.\nIt makes me happy.\n"

Но это дало мне "I like cake." вместо этого. Как я могу получить ожидаемый результат?

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Добавлять абзацы в строку, пока входные данные не состоят из пустой строки:

str  = ""
para = "init"
str << (para = gets) until para.chomp.empty? #or para == "\n"
p str
0 голосов
/ 20 мая 2019

Вот альтернатива с немного другой логикой

def getps
  save, $/ = $/, "\n\n"
  gets.chomp
ensure
  $/ = save
end

str = getps

Глобальная переменная $/ - это то, что Ruby использует для определения конца строки.gets получает вещи до конца строки.Если мы скажем Ruby, что конец строки - это две новые строки, то gets ждет, пока у нас не появятся две строки подряд, пока она не завершится.Так как они нам не нужны, мы просто отрубим их.Остальная часть кода предназначена только для того, чтобы обеспечить правильное восстановление $/ после этого, чтобы нормальное gets не запуталось навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...