在Ruby中,如何以不区分大小写的方式查找数组中元素的索引?
In Ruby, how do I find the index of an element in an array in a case-insensitive way?
我正在使用 Ruby 2.3。我可以使用
找到数组中元素的索引
2.3.0 :001 > a = ["A", "B", "C"]
=> ["A", "B", "C"]
2.3.0 :003 > a.index("B")
=> 1
但是如果我想以不区分大小写的方式查找元素的索引,我该怎么做呢?例如,我可以做
2.3.0 :003 > a.index(“b”)
得到和上面一样的结果?你可以假设如果所有元素都是大写的,那么数组中不会有两个相同的元素。
如果您知道字符串包含所有大写字母,则可以使用方法upcase
将字符串转换为大写:
2.3.0 :001 > a = ["A", "B", "C"]
=> ["A", "B", "C"]
2.3.0 :002 > a.index("b".upcase)
=> 1
2.3.0 :003 > tmp = "c"
=> "c"
2.3.0 :004 > a.index(tmp.upcase)
=> 2
a = ["A", "B", "C"]
a.find_index {|item| item.casecmp("b") == 0 }
# or
a.find_index {|item| item.downcase == "b" }
请注意,通常的 Ruby 注意事项适用于重音和其他非 Latin characters. This will change in Ruby 2.4. See this SO question: Ruby 1.9: how can I properly upcase & downcase multibyte strings?
的大小写转换和比较
我正在使用 Ruby 2.3。我可以使用
找到数组中元素的索引2.3.0 :001 > a = ["A", "B", "C"]
=> ["A", "B", "C"]
2.3.0 :003 > a.index("B")
=> 1
但是如果我想以不区分大小写的方式查找元素的索引,我该怎么做呢?例如,我可以做
2.3.0 :003 > a.index(“b”)
得到和上面一样的结果?你可以假设如果所有元素都是大写的,那么数组中不会有两个相同的元素。
如果您知道字符串包含所有大写字母,则可以使用方法upcase
将字符串转换为大写:
2.3.0 :001 > a = ["A", "B", "C"]
=> ["A", "B", "C"]
2.3.0 :002 > a.index("b".upcase)
=> 1
2.3.0 :003 > tmp = "c"
=> "c"
2.3.0 :004 > a.index(tmp.upcase)
=> 2
a = ["A", "B", "C"]
a.find_index {|item| item.casecmp("b") == 0 }
# or
a.find_index {|item| item.downcase == "b" }
请注意,通常的 Ruby 注意事项适用于重音和其他非 Latin characters. This will change in Ruby 2.4. See this SO question: Ruby 1.9: how can I properly upcase & downcase multibyte strings?
的大小写转换和比较