0
我想用ipaddr按升序排序一些ip地址。不知道爲什麼這不起作用。運行我的自定義排序後,訂單不受影響。在Ruby 1.8中排序IP地址
require 'ipaddr'
ip_array = Array.new
ip_array2 = Array.new
ip_array = ["d1.mysite.com",
"d3.mysite.com",
"d2.mysite.com",
"d6.mysite.com",
"d32.mysite.com",
"d5.mysite.com",
"d9.mysite.com",
"d34.mysite.com"]
## First, get IP addresses and push onto ip_array2
ip_array.each { |x| ip_array2.push(IPSocket::getaddress(x)) }
## Let's see the unsorted array contents
ip_array2.each { |x| puts x }
## Now, sort IP addresses in ip_array2
ip_array2.sort { |a,b| IPAddr.new(a) <=> IPAddr.new(b) }
## Let's see the sorted array contents
ip_array2.each { |x| puts x }
BEFORE SORT (1st 3 octets are identical)
xxx.xx.xx.78
xxx.xx.xx.114
xxx.xx.xx.54
xxx.xx.xx.57
xxx.xx.xx.58
xxx.xx.xx.79
xxx.xx.xx.81
xxx.xx.xx.100
AFTER SORT (1st 3 octets are identical)
xxx.xx.xx.78
xxx.xx.xx.114
xxx.xx.xx.54
xxx.xx.xx.57
xxx.xx.xx.58
xxx.xx.xx.79
xxx.xx.xx.81
xxx.xx.xx.100
謝謝。排序順序沒有變化......怪異 – Slinky
sort_by不到位。調用'sort_by!'來改變ip_array2或將sort_by的結果賦給ip_array2。對於您正在進行的電話也是如此。使用'排序!'進行排序 –
輝煌,感謝您的解釋 – Slinky