具有多个点的特定字符串中最大的一个

时间:2016-07-21 13:09:26

标签: ruby

我试图在特定格式中找到两个十进制值或整数之间的较大值。例如,

  • 2.22.1.5进行比较。 2.2是更大的
  • 2.3.32.3.456进行比较。 2.3.456更大。

我无法处理它。请提出建议以解决此问题。

2 个答案:

答案 0 :(得分:2)

您可以从每个版本创建一个数组:

def to_version(s)
  s.split('.').map(&:to_i)
end

to_version('2.3.3')
# => [2, 3, 3]

现在你可以比较两个结果(数组是可比较的):

['2.2', '2.1.5'].max_by { |x| to_version(x) }
# => "2.2"
['2.3.3', '2.3.456'].max_by { |x| to_version(x) }
# => "2.3.456"
['2.13.3', '2.3.456'].max_by { |x| to_version(x) }
# => "2.13.3"

答案 1 :(得分:1)

Rubygems知道字符串是版本号:

['2.13.3', '2.3.456'].map{|v| Gem::Version.new(v)}.sort 
# =>[#<Gem::Version "2.3.456">, #<Gem::Version "2.13.3">]