所以,假设我有一系列字符串,例如:[“74712 Don”,“48342 Cindy”,“50912 Nick”],我想按照名字前面的数字对它们进行排序。我如何只按每个元素的前5个字符排序(同时还将它们作为数字进行评估)?谢谢
假设您希望按字符串的前导数字排序,您可以执行以下操作:
["74712 Don", "48342 Cindy", "50912 Nick"].sort_by(&:to_i)
#=> ["48342 Cindy", "50912 Nick", "74712 Don"]
这是有效的,因为String#to_i忽略了“超出有效数字末尾的无关字符”。
如果数组的某些元素可能具有五个以上的前导数字,但只考虑前五个,则可以使用
["74712 Don", "48342 Cindy", "209124 Nick"].sort_by { |s|
s[0,5].to_i }
#=> ["209124 Nick", "48342 Cindy", "74712 Don"]