Comparar dos números de versión (string.compare_version)
Declaración
resultado_de_comparación = string.compare_version(número_de_versión_a, número_de_versión_b)
Parámetros
- número de versión a, número de versión b
Tipo texto, dos números de versión que se compararán
Valores devueltos
- resultado de comparación
Tipo entero; devuelve 1 si el número de versión a es mayor que el número de versión b, -1 si es menor y 0 si son iguales
Descripción
Compara dos cadenas de números de versión según las reglas siguientes
Usa valores numéricos puros separados por punto., guion-o espacio
Los distintos separadores producen el mismo efecto y varios separadores consecutivos se consideran uno solo
El peso disminuye progresivamente de izquierda a derecha entre los segmentos
Al encontrar cualquier carácter no válido, deja de comparar el contenido posterior
Si el número de segmentos es distinto, completa con0los segmentos que falten antes de comparar
Una cadena vacía o no válida se considera el número de versión0
Por ejemplo,1.1y1.1.0son dos números de versión iguales
Por ejemplo,1.1y1.1-0son dos números de versión iguales
Por ejemplo,1.1y1-1son dos números de versión iguales
Por ejemplo,1.0y1 0(hay un espacio entre 1 y 0) son dos números de versión iguales
Por ejemplo,1.0es mayor que0.99999
Esta función puede usarse en XUI
Ejemplo
-- "1.5", "1.05" y "1.005" son la misma versión
-- "1.5", "1.50" y "1.500" son tres números de versión distintos
-- "1.11" es mayor que "1.5"
-- "1.52" es igual a "1.52.0"
assert(string.compare_version("", "") == 0)
assert(string.compare_version("1", "") == 1)
assert(string.compare_version("", "1") == -1)
assert(string.compare_version("1", "1") == 0)
assert(string.compare_version("1.0", "1") == 0)
assert(string.compare_version("1", "1.0") == 0)
assert(string.compare_version("1.", "1") == 0)
assert(string.compare_version("1", "1.") == 0)
assert(string.compare_version("1.", "1.0") == 0)
assert(string.compare_version("1.0", "1.") == 0)
assert(string.compare_version("1.0", "1.0") == 0)
assert(string.compare_version("1.0.0", "1.0.0") == 0)
assert(string.compare_version("1.1", "1.0") == 1)
assert(string.compare_version("1.0", "1.1") == -1)
assert(string.compare_version("1.1", "1.10") == -1)
assert(string.compare_version("1.2", "1.11") == -1)
assert(string.compare_version("1.1", "1.1.1") == -1)
assert(string.compare_version("1.2", "1.1.1") == 1)
assert(string.compare_version("1.0", "0.99999") == 1)
assert(string.compare_version("1.10.1", "1.10") == 1)
assert(string.compare_version("1.2-4", "1.2-3") == 1)
assert(string.compare_version("1.2-3", "1.2.3") == 0)
assert(string.compare_version("1.2-4", "1.2.3.0") == 1)
assert(string.compare_version("1.2-4", "1.2.3.10") == 1)
assert(string.compare_version("1.2-4", "1.2.30.10") == -1)
assert(string.compare_version("1.2-3", "1.2.4") == -1)
assert(string.compare_version("2.2", "1.2") == 1)
assert(string.compare_version("2.2", "10.2") == -1)
assert(string.compare_version("2..2", "2.2") == 0)
assert(string.compare_version("2.2.x.3", "2.2") == 0)
assert(string.compare_version("x", "") == 0)