我试图在特定格式中找到两个十进制值或整数之间的较大值。例如,
2.2
与2.1.5
进行比较。 2.2
是更大的2.3.3
与2.3.456
进行比较。 2.3.456
更大。我无法处理它。请提出建议以解决此问题。
答案 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">]