Как я могу отобразить текст в той же строке? - PullRequest
0 голосов
/ 12 марта 2019

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

puts "whats your name?"
$name = STDIN.gets
puts "Oh #$name, nice to meet you"

отображается в отдельной строке. Это помещает имя и затем "nice to meet you" в новую строку.

Есть ли способ это исправить? Также, если вы видите что-то не так, пожалуйста, скажите мне.

Ответы [ 3 ]

5 голосов
/ 12 марта 2019

Метод gets без какой-либо опции получает входные данные, включая завершающий конец строки. Если вы просто интерполируете это как часть строки, этот конец строки будет напечатан как разрыв строки.

Чтобы избежать разрыва строки, передайте параметр chomp со значением true в gets:

$name = STDIN.gets(chomp: true)

По-старому, применить chomp после gets, например:

$name = STDIN.gets.chomp

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

Другие ошибки в вашем коде:

  • Вы пропустили предложение whats your name?.
  • Вы пропустили апостроф в whats.
  • Вам следует избегать использования глобальной переменной, такой как $name. Попробуйте использовать другой тип переменной.
  • Вы пропустили точку в конце предложения Oh #$name, nice to meet you.
1 голос
/ 12 марта 2019

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

Кроме того, я бы предложил использовать метод gets.chomp и пропустить STDIN.

Пример:

puts "What's your name?"
name = gets.chomp 
puts "Oh, #{name}, nice to meet you."
0 голосов
/ 12 марта 2019
  • gets используется для ввода данных от пользователя и включает в себя разрыв строки в конце.
  • chomp используется для возврата и сохранения данных в виде строкового значения.

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