我正在用ruby编写一小段代码,该代码应该重写用户指定的单词,而不管传递的单词是大写、小写还是两者的组合。我试图解决这个问题的方法是对用户传递的字符串使用downcase!方法。然而,它似乎无法正常工作。例如,如果传递并存储在变量“text”中的第一个字符串全部为大写,传递并存储在变量“redact”中的第二个字符串全部为downcase,则程序将无法对该单词进行修订,只会打印出downcase.中的所有内容。
下面是代码:

puts "Enter what you want to search through"
text = gets.chomp.downcase!
puts "Enter word to be redacted"
redact = gets.chomp.downcase!

words = text.split(" ")

words.each do |word|
 if word == redact
     print "REDACTED "
 else
     print word + " "
 end
end

最佳答案

问题是您使用downcase!如果不做任何更改,它将返回nil。字符串本身已被修改,但返回的值为nil,随后将其保存在text变量中。
请参阅有关downcasedowncase!的文档以了解差异。

10-08 04:36