大家好,我正在尝试进行奖励练习4.6
“无论是大写还是小写,您都可以采取哪些措施来确保您的编辑器能够编辑一个字?”
(link = https://www.codecademy.com/courses/ruby-beginner-en-mzrZ6/0/6?curriculum_id=5059f8619189a5000201fbcb)
这是我的代码
puts "Tell me the text to look for"
text = gets.chomp
puts "Tell me the word to censor"
word = gets.chomp
text_array = text.split(" ")
text_array.each do |parole|
if parole == ( word.downcase || word.capitalize )
puts "censure".upcase
else
puts "#{parole}"
end
end
为什么这是错的? PLZ不要给我一个完全不同的代码,我想了解为什么我的不正确,怎么会是正确的,谢谢
答案 0 :(得分:0)
您可以在String#gsub
使用一些正则表达式:
运行:
#file.rb
puts ">> text?"
text = gets.chomp
puts ">> censor?"
word = gets.chomp
puts text.gsub(/\b#{word}\b/i,'*****')
Q&我曾经帮助过这个答案:
答案 1 :(得分:0)
我认为这里的主要问题是您误解了||
或运算符的使用方式。
if parole == ( word.downcase || word.capitalize )
无法检查parole
是否等于word.downcase
或等于word.capitalize
。 ||
是一个运算符,表示如果||
的任一侧为真,则整体表达式被视为真。因此,您需要完整地写出两个条件。
if parole == word.downcase || parole == word.capitalize
此外,您似乎误解了capitalize
与upcase
的误解。 capitalize
返回一个字符串,确保第一个字母为大写,其余为小写,而upcase
返回所有大写字母的字符串。
所以你可以使用:
if parole == word.downcase || parole == word.upcase
只要以全部大写或全部小写输入parole
,这都会有效。
或者,您可以确保parole
为小写:
parole = parole.downcase
然后只需要一个条件:
if parole == word.downcase
如sagarpandya82所述,还有其他方法使用gsub
等,但上述建议在修复原始代码方面最接近。