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

Ruby - find keywords despite case-sensitive

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

在此代码中 ruby 将搜索 tree 单词,但会忽略所有其他情况 像 TreetReE 等等

有没有办法告诉 ruby 我不关心大小写 并抓住所有的词,不管他们的情况?

你可以先小写:

u.downcase.include?("tree")

编辑以下评论:

可以包括一般搜索词的小写

u.downcase.include?(x.downcase)

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

  • 将 u 小写并与 'tree' u.downcase.include? 'tree'

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

奖金规格:

  • 'treetop' 应该匹配吗?

如果没有,请使用正则表达式 /\btree\b/i 或像这样扫描句子中的单词树:

u.downcase.scan(/\w+/).include?('tree')

仅涉及正则表达式匹配的更简单的解决方案:

u = gets.chomp

if u =~ /tree/i
  # ...
end

勾选 String#casecmp。它 returns 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