4
我有字符串的一個這樣的數組:排序陣列從內容計算
[ 「巴西(62)」, 「PalestinianTerritoryOccupied(6)」, 「馬其頓(2)」, 「德國(6)「]
我想按最高值對它們進行排序,但它讓我難倒了。我已經試過各種怪異,精彩(無用)之類的東西:
cont.sort! { |it| it.scan(/\d+/).to_s.to_i}
我有字符串的一個這樣的數組:排序陣列從內容計算
[ 「巴西(62)」, 「PalestinianTerritoryOccupied(6)」, 「馬其頓(2)」, 「德國(6)「]
我想按最高值對它們進行排序,但它讓我難倒了。我已經試過各種怪異,精彩(無用)之類的東西:
cont.sort! { |it| it.scan(/\d+/).to_s.to_i}
sort_by {|e| e[/\d+/].to_i }.reverse
應該做的伎倆。你可以這樣寫一個更有效的和優雅的方式(見註釋),如以下:
sort_by {|e| -e[/\d+/].to_i }
注意-
。
使用排序,你可以這樣做:
sort {|a, b| b[/\d+/].to_i <=> a[/\d+/].to_i }
編輯
String#[]已建議中的註釋。
感謝您的回覆。不幸的是2和26彼此相鄰 - 與1和11相同。儘管靠近! – facetoe 2012-02-01 16:56:03
是的,在每種情況下只需要在'[0]'之後用'.to_i'轉換爲一個整數。 – Shadwell 2012-02-01 16:59:20
我明白了。我會更新答案;) – lucapette 2012-02-01 16:59:22