如何仅使用Ruby中字符串的前5个字符对数组进行排序?

问题描述 投票:0回答:1

所以,假设我有一系列字符串,例如:[“74712 Don”,“48342 Cindy”,“50912 Nick”],我想按照名字前面的数字对它们进行排序。我如何只按每个元素的前5个字符排序(同时还将它们作为数字进行评估)?谢谢

ruby sorting
1个回答
6
投票

假设您希望按字符串的前导数字排序,您可以执行以下操作:

["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"]
© www.soinside.com 2019 - 2024. All rights reserved.