CodeCademy 4.6奖励练习

时间:2017-04-14 15:54:01

标签: ruby

大家好,我正在尝试进行奖励练习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不要给我一个完全不同的代码,我想了解为什么我的不正确,怎么会是正确的,谢谢

2 个答案:

答案 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

此外,您似乎误解了capitalizeupcase的误解。 capitalize返回一个字符串,确保第一个字母为大写,其余为小写,而upcase返回所有大写字母的字符串。

所以你可以使用:

if parole == word.downcase || parole == word.upcase

只要以全部大写或全部小写输入parole,这都会有效。

或者,您可以确保parole为小写:

parole = parole.downcase

然后只需要一个条件:

if parole == word.downcase

sagarpandya82所述,还有其他方法使用gsub等,但上述建议在修复原始代码方面最接近。