4

Is there a better way to ignore uppercase than this?

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

I want to check if a string element in an array starts with another string ignoring uppercase, like LIKE % in MySQL.

4

3 回答 3

5

您可以使用正则表达式String#=~

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

由于0真实的并且nil虚假的,因此可以在if子句中使用:

if str =~ /^hell/i
  # starts with hell
end
于 2013-08-23T11:41:11.523 回答
4

我会做这样的事情:

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

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

于 2013-08-23T11:34:21.620 回答
0

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

'Hello'.match /^hell/i

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

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

于 2013-08-23T11:41:43.987 回答