我正在用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
变量中。
请参阅有关downcase和downcase!的文档以了解差异。