Aller au contenu principal

Comparer deux numéros de version (string.compare_version)

Déclaration

résultatComparaison = string.compare_version(versionA, versionB)

Paramètres

  • versionA, versionB
    De type texte, les deux numéros de version à comparer

Valeur de retour

  • résultatComparaison
    De type entier : renvoie 1 si versionA est supérieure à versionB, -1 si versionA est inférieure à versionB et 0 si les versions sont égales

Description

Compare deux chaînes de numéro de version selon les règles suivantes : Les valeurs sont des nombres purs séparés par un point ., un tiret - ou une espace. Les différents séparateurs sont équivalents ; plusieurs séparateurs consécutifs sont considérés comme un seul séparateur. Le poids diminue progressivement de gauche à droite selon le segment. À la rencontre de tout caractère non valide, la comparaison s’arrête et le contenu suivant n’est pas comparé. Si le nombre de segments diffère, les segments manquants sont complétés par 0 avant la comparaison. Une chaîne vide ou invalide est considérée comme le numéro de version 0. Par exemple, 1.1 et 1.1.0 sont deux numéros de version égaux. Par exemple, 1.1 et 1.1-0 sont deux numéros de version égaux. Par exemple, 1.1 et 1-1 sont deux numéros de version égaux. Par exemple, 1.0 et 1 0 (avec une espace entre 1 et 0) sont deux numéros de version égaux. Par exemple, 1.0 est supérieur à 0.99999. Cette fonction peut être utilisée dans XUI.

Exemple

-- "1.5", "1.05" et "1.005" désignent la même version
-- "1.5", "1.50" et "1.500" sont trois numéros de version différents
-- "1.11" est supérieur à "1.5"
-- "1.52" est égal à "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)