Ruby - 尽管区分大小写,但查找关键字

时间:2016-05-26 12:10:20

标签: ruby case-sensitive

u = gets.chomp
if u.include? "tree"
  # ...

在此代码中,ruby将搜索tree个字,但它会忽略所有其他情况 例如TreetReE

有没有办法告诉红宝石我不关心案件 并尽管他们的案件得到所有的话?

4 个答案:

答案 0 :(得分:4)

你有(至少)两个解决这个问题的方法:

  • downcase u并与'tree'u.downcase.include? 'tree'

  • 进行比较
  • 使用不区分大小写的正则表达式u.match(/tree/i)

奖金规格:

  • 'treetop'应该匹配吗?

如果没有,请使用正则表达式/\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