String.equalsIgnoreCase(...)等效于Ruby

时间:2014-01-24 11:06:26

标签: ruby

我想以不区分大小写的方式在Ruby中测试2个字符串是否相等。

Fantom等语言中,您只需编写:

string1.equalsIgnoreCase(string2)

在Ruby中执行此操作的 惯用 方式是什么?

4 个答案:

答案 0 :(得分:15)

您可以使用casecmp

"Test".casecmp("teST")
=> 0

"Test".casecmp("teST2")
=> -1

因此,为了测试平等,你可以这样做:

if str.casecmp(str2).zero?
  # strings are equal
end

答案 1 :(得分:4)

虽然有casecmp

0 == s1.casecmp(s2) # strings equal

我个人更喜欢

s1.downcase == s2.downcase

答案 2 :(得分:1)

您可以将字符串转换为小写,然后比较

a.downcase == b.downcase

或者,如果您愿意,可以大写

a.upcase == b.upcase

答案 3 :(得分:1)

您可以使用String#match方法:

s = "Test"
s.match(/teST/i) # => #<MatchData "Test">
s.match(/teST2/i) # => nil

请记住,在Ruby中,除nilfalse外,所有对象都具有真值。所以你也可以使用这个技巧来执行条件测试。