ruby - ruby 中的版本排序(使用 alphas、betas 等)

标签 ruby sorting natural-sort version-sort

如何在 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 应该是第一个。

谁有可行的方法?其他语言也有帮助!

最佳答案

Ruby 附带了 Gem 类,它知道版本:

ar = ['10.0.0b12', '10.0.0b3', '10.0.0a2', '9.0.10', '9.0.3']

p ar.sort_by { |v| Gem::Version.new(v) }
# => ["9.0.3", "9.0.10", "10.0.0a2", "10.0.0b3", "10.0.0b12"]

关于ruby - ruby 中的版本排序(使用 alphas、betas 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48569003/

相关文章:

ruby-on-rails - 进行 Rails 搜索查询的有效方法

java - TreeMap 排序不适用于相等的值

java - 插入已排序的数组队列

postgresql - 使用比较运算符比较 postgres 中的字符串?

Java 字符串数字比较器

ruby - 压缩输出不同于 Go to Ruby 实现

ruby-on-rails - 初学者 Rails 部署到 Heroku

ruby - 如何在命名空间类中包含模块?

ruby - 如何按不同顺序的多个条件进行排序?

sql-server - SQL Server 的自然排序?