如何使用start_with忽略大写?

时间:2013-08-23 11:31:19

标签: ruby string

有没有更好的方法来忽略大写呢?

"Hello".start_with?("hell","Hell") #=> true

我想检查数组中的字符串元素是否以另一个忽略大写的字符串开头,如MySQL中的LIKE %

3 个答案:

答案 0 :(得分:5)

您可以regular expression使用String#=~

"Hello" =~ /^hell/i    #=> 0
"hELLO" =~ /^hell/i    #=> 0
"world" =~ /^hell/i    #=> nil

由于0 truthy nil falsy ,因此可以在if子句中使用:

if str =~ /^hell/i
  # starts with hell
end

答案 1 :(得分:4)

我会做这样的事情:

'Hello'.upcase.start_with?('HELL')

解决同一问题的另一种方法。这相当于在SQL中执行类似UPPER(column) like 'SOMETHING%'的操作。

答案 2 :(得分:0)

我认为最好的方法是使用Ruby的正则表达式匹配忽略大小写标志:

'Hello'.match /^hell/i

'^'表示字符串的开头。没有它会匹配字符串中的“地狱”。最后一个'i'只是一个正则表达式标志,表示与忽略大小写集匹配。

您可以在此处找到有关Ruby Regex API的更多信息: http://www.regular-expressions.info/ruby.html