Saltar al contenido principal

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 con 0 los segmentos que falten antes de comparar
Una cadena vacía o no válida se considera el número de versión 0
Por ejemplo, 1.1 y 1.1.0 son dos números de versión iguales
Por ejemplo, 1.1 y 1.1-0 son dos números de versión iguales
Por ejemplo, 1.1 y 1-1 son dos números de versión iguales
Por ejemplo, 1.0 y 1 0 (hay un espacio entre 1 y 0) son dos números de versión iguales
Por ejemplo, 1.0 es mayor que 0.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)