u = gets.chomp
if u.include? "tree"
# ...
在此代码中,ruby将搜索tree
个字,但它会忽略所有其他情况
例如Tree
或tReE
等
有没有办法告诉红宝石我不关心案件 并尽管他们的案件得到所有的话?
答案 0 :(得分:4)
你有(至少)两个解决这个问题的方法:
downcase u并与'tree'u.downcase.include? 'tree'
使用不区分大小写的正则表达式u.match(/tree/i)
奖金规格:
如果没有,请使用正则表达式/\btree\b/i
或扫描您的句子,如下所示:
u.downcase.scan(/\w+/).include?('tree')
答案 1 :(得分:1)
你可以首先拒绝:
u.downcase.include?("tree")
编辑以下评论:
可能包含一般搜索字词的小写
u.downcase.include?(x.downcase)
答案 2 :(得分:1)
只涉及正则表达式匹配的简单解决方案:
u = gets.chomp
if u =~ /tree/i
# ...
end
答案 3 :(得分:1)
检查String#casecmp。如果两个字符串相等,则返回0
,不区分大小写。
> string1.casecmp(string2) == 0
#=> true
> "tree".casecmp("TRee") == 0
#=> true
> "tree".casecmp("TrEe") == 0
#=> true
> "tree".casecmp("trEE") == 0
#=> true
> "tree".casecmp("trEEe") == 0
#=> false
尝试:
u = gets.chomp
if u.casecmp("tree") == 0
注意: downcase
不适用于所有案例,请参见下面的示例
> "tree".include?("TRe".downcase)
#=> true