【发布时间】:2016-01-22 05:59:43
【问题描述】:
如何在 Ruby 中对版本列表进行排序?我见过有关自然排序的东西,但这是超越了那一步。
输入是一堆这样的字符串:
input = ['10.0.0b12', '10.0.0b3', '10.0.0a2', '9.0.10', '9.0.3']
我几乎可以用naturally gem 做到这一点:
require 'naturally'
Naturally.sort(input)
=> ["9.0.3", "9.0.10", "10.0.0a2", "10.0.0b12", "10.0.0b3"]
问题:10.0.0b3 排在 10.0.0b12 之后; 10.0.0b3 应该是第一个。
有人有办法吗?其他语言也很有帮助!
【问题讨论】:
-
这些是非常非典型的版本字符串。您不太可能找到现成的解决方案;你应该自己写。
-
我将其更改为使用语义版本控制。这更典型。
-
@MusashiAharon 这不是语义版本控制。为此,您希望
b12b3等前面有-。 -
是的。使用连字符,自然排序可以很好地工作,但是这种几乎是语义的系统仍然很常见。
标签: ruby sorting natural-sort version-sort