您可以使用正则表达式解析版本号,如下所述:A regex for version number parsing
这个会做:^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$
所以:
version_regex = /^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/
user_version_array = user_version.match(version_regex)[1..3].compact.map(&:to_i)
server_version_array = server_version.match(version_regex)[1..3].compact.map(&:to_i)
为了干燥起见,您可能希望将其分解为辅助方法:
def parse_version(str)
version_regex = /^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/
str.match(version_regex)[1..3].compact.map(&:to_i)
end
对于 and 的示例user_version = '2.4.4'
,server_version = '2.5'
它为您提供了数组:
user_version_array = [2,4,2]
server_version_array = [2,5]
然后,您可以轻松地遍历这些以进行比较:
compliant_version = true
(0..2).each do |i|
if (user_version_array[i] || 0) < (server_version_array[i] || 0)
compliant_version = false
end
end