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

Mag*_*gie 0 ruby sorting

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

Car*_*and 6

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

["74712 Don", "48342 Cindy", "50912 Nick"].sort_by(&:to_i)
  #=> ["48342 Cindy", "50912 Nick", "74712 Don"]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为String#to_i忽略"超出有效数字末尾的无关字符".

如果数组的某些元素可能具有五个以上的前导数字,但只考虑前五个,则可以使用

 ["74712 Don", "48342 Cindy", "209124  Nick"].sort_by {  |s|
   s[0,5].to_i }
  #=> ["209124  Nick", "48342 Cindy", "74712 Don"]
Run Code Online (Sandbox Code Playgroud)

  • @sawa是真的,但没有伤害,(IMO)有助于表达代码的意图. (2认同)
  • @sawa,谢谢.我做了两个你建议的改变.(读者:我之前有[/\A\d {,5} /].to_i`,这解释了μ的评论.) (2认同)
  • @muistooshort(又名*procman*,*pieman*),好点. (2认同)