【问题标题】:CodeCademy 4.6 bonus exerciseCodeCademy 4.6 奖励练习
【发布时间】:2017-04-14 15:54:00
【问题描述】:

大家好,我正在尝试做奖励练习 4.6

“你能做些什么来确保你的编辑者编辑一个词,不管它是大写还是小写?”

(链接 = 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

为什么错了?请不要给我一个完全不同的代码我想了解为什么我的不正确,以及如何正确,谢谢

【问题讨论】:

  • 请阅读“How to Ask”和“minimal reproducible example”以及链接页面。在询问时,我们需要您努力使您的问题易于阅读。这包括正确格式化内容,这有助于我们为您提供帮助。不付出努力表明您不尊重我们为帮助您而付出的努力。此外,SO 不是讨论列表或推文。使用正确的语法。 “请不要……”?

标签: ruby


【解决方案1】:

我认为这里的主要问题是您误解了|| 或运算符的使用方式。

if parole == ( word.downcase || word.capitalize ) 不是检查parole 是否等于word.downcase 等于word.capitalize 的方法。 || 是一个运算符,它表示如果|| 的任一侧为真,则认为整体表达式为真。所以你需要完整地写出这两个条件,例如

if parole == word.downcase || parole == word.capitalize

另外,您似乎误解了 capitalizeupcasecapitalize 返回一个字符串,确保第一个字母为大写字母,其余为小写字母,而 upcase 返回一个全部大写的字符串。

所以你可以使用:

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

只要parole 全部大写或全部小写,这将起作用。

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

parole = parole.downcase

然后只需要一个条件:

if parole == word.downcase

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

【讨论】:

  • @MarcoVanali 如果您发现此答案有用,请考虑通过单击灰色勾号使其变为绿色来接受它。
  • 我试过了,但我不能,因为我没有足够的声誉。对不起。
【解决方案2】:

您可以在此处使用String#gsub 和一些正则表达式:

#file.rb
puts ">> text?"
text = gets.chomp

puts ">> censor?"
word = gets.chomp

puts text.gsub(/\b#{word}\b/i,'*****')

运行:

$ ruby file.rb
>> text?
#this is some MI5 text by mI5.
>> censor?
#MI5
#this is some ***** text by *****.

我曾经帮助我回答这个问题的问答:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2018-10-10
    • 2012-10-12
    • 2020-05-16
    • 2021-07-02
    相关资源
    最近更新 更多