以数字方式对一串ID值进行排序

Twi*_*ceB 2 ruby sorting string integer

我有以下字符串数组:

x = ["1.2", "1.1", "1.18", "1.18.3", "1.4", "1.18.20", "2.5"]
Run Code Online (Sandbox Code Playgroud)

Ruby的Array排序方法按字母顺序排序字符串,结果如下:

[
[0] "1.1",
[1] "1.18",
[2] "1.18.20",
[3] "1.18.3",
[4] "1.2",
[5] "1.4",
[6] "2.5",
]
Run Code Online (Sandbox Code Playgroud)

我想根据每个小数内的数值对这个数组进行排序,以便它返回以下顺序:

[
[0] "1.1",
[1] "1.2",
[2] "1.4",
[3] "1.18",
[4] "1.18.3",
[5] "1.18.20",
[6] "2.5"
]
Run Code Online (Sandbox Code Playgroud)

我也不能保证每个"ID"中的小数点数.任何帮助将不胜感激.谢谢!

Mau*_*res 6

您可以使用rubygems版本比较:

x = ["1.2", "1.1", "1.18", "1.18.3", "1.4", "1.18.20", "2.5"]
x.sort_by { |i| Gem::Version.new(i) }
# => ["1.1", "1.2", "1.4", "1.18", "1.18.3", "1.18.20", "2.5"] 
Run Code Online (Sandbox Code Playgroud)