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 par0avant la comparaison. Une chaîne vide ou invalide est considérée comme le numéro de version0. Par exemple,1.1et1.1.0sont deux numéros de version égaux. Par exemple,1.1et1.1-0sont deux numéros de version égaux. Par exemple,1.1et1-1sont deux numéros de version égaux. Par exemple,1.0et1 0(avec une espace entre 1 et 0) sont deux numéros de version égaux. Par exemple,1.0est 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)