ruby中的sort方法,这个方法可以加一个两个参数的block,这个block可以返回1 0 -1来表示这两个参数大于 等于 小于
示例:

str = ["192.160.175","192.160.90","192.168.2.175","192.168.2.90","192.168.1.180","192.160.90.1"]

arr = str.sort do |a, b|
    ip1 = a.split('.').map &:to_i
    ip2 = b.split('.').map &:to_i
    ret = 0
    ip1.each_with_index do |ip, i|
      if ip2[i].nil?
        ret = 1
        break
      end
      if ip != ip2[i]
        ret = ip <=> ip2[i]
        break
      end
    end
    ret = ret == 0 && ip1.size > ip2.size ? 1 : ret
end
p arr

输出:

["192.160.90","192.160.175","192.160.90.1","192.168.1.180","192.168.2.90","192.168.2.175"]

 

相关文章:

  • 2022-02-14
  • 2022-12-23
  • 2021-06-03
  • 2021-05-27
  • 2021-09-19
  • 2022-01-10
  • 2021-11-20
猜你喜欢
  • 2021-10-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2021-05-18
  • 2021-09-17
  • 2021-08-23
相关资源
相似解决方案