在我的示例代码中,我试图替换'text'中与'redact'或'redact_again'匹配的任何单词。由于它是一个/或场景,我认为会使用||
。事实证明&&
确实有效。如果两者都匹配,则将其替换为“Redacted”一词。如果找不到匹配项,它只会重新打印“文本”。我只想了解为什么使用||
在两个/或场景中都不起作用?
puts "Tell me a sentence"
text = gets.chomp.downcase
puts "Redact this word: "
redact = gets.chomp.downcase
puts "And redact another word: "
redact_another = gets.chomp.downcase
words = text.split(" ")
words.each do |x|
if x != redact && x != redact_another
print x + " "
else
print "REDACTED "
end
end
答案 0 :(得分:1)
以下应该工作
if x == redact || x == redact_another
print "REDACTED "
else
print x + " "
end
OR
print [redact, redact_another].include?(x) ? "REDACTED " : x + " "
答案 1 :(得分:0)
这是boolean条件导致这种情况发生。
布尔值为0
或1
。
&&
时,BOTH变量必须1
为true
。 ||
时,EITHER变量必须1
为true
。反转逻辑意味着以下两个语句在逻辑上是正确的:
(x == redact || x == redact_another) == (if x != redact && x != redact_another)
妙的。