Замена слова в строке пользовательским вводом [RUBY] - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь выяснить, как заменить слово в строке пользовательской строкой.

Пользователю будет предложено ввести слово, которое он хотел бы заменить, и тогда он будет сновабудет предложено ввести новое слово.

Например, начальная строка будет "Hello, World."Пользователь вводит «Мир», затем вводит «Рубин». Наконец, «Привет, Рубин».будет распечатывать.

До сих пор я пытался использовать gsub и метод [] ни один не работал.Есть мысли?

Вот моя функция на данный момент:

def subString(string)
    sentence = string
    print"=========================\n"
    print sentence
    print "\n"
    print "Enter the word you want to replace: "
    replaceWord = gets
    print "Enter what you want the new word to be: "
    newWord = gets
    sentence[replaceWord] = [newWord]
    print sentence
    #newString = sentence.gsub(replaceWord, newWord)
    #newString = sentence.gsub("World", "Ruby")
    #print newString 
end

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Когда вы вводите «Мир», вы фактически нажимаете 6 клавиш: Ш о r l d и введите (клавиши-модификаторы, такие как shift , не распознаются как отдельные символы).Поэтому метод gets возвращает "World\n" с \n начала новой строки .

Чтобы удалить такие новые строки, есть chomp:

"World\n".chomp
#=> "World"

Применительно к вашему коду: (вместе с некоторыми незначительными исправлениями)

sentence = "Hello, World."

puts "========================="
puts sentence

print "Enter the word you want to replace: "
replace_word = gets.chomp

print "Enter what you want the new word to be: "
new_word = gets.chomp

sentence[replace_word] = new_word

puts sentence

Запуск кода дает:

=========================
Hello, World.
Enter the word you want to replace: World
Enter what you want the new word to be: Ruby
Hello, Ruby. 
0 голосов
/ 20 ноября 2018

Проблема в том, что он получает также новую строку при вводе пользователем, так что вы хотите удалить ее. Я сделал этот глупый тестовый пример в консоли

sentence = "hello world"
replace_with = gets  # put in hello
replace_with.strip!
sentence.gsub!(replace_with, 'butt')
puts sentence  # prints 'butt world'
...