Сравнение двух номеров версий (string.compare_version)
Объявление
результат_сравнения = string.compare_version(номер_версии_a, номер_версии_b)
Параметры
- Номер версии A, номер версии B
Строки, два номера версий для сравнения.
Возвращаемое значение
- Результат сравнения
Целое число: 1, если номер версии A больше номера версии B; -1, если номер версии A меньше номера версии B; 0, если номера версий равны.
Описание
Сравнивает строки с номерами версий по следующим правилам.
Используются только числовые значения, разделённые точкой., дефисом-или пробелом.
Разные разделители равнозначны, а несколько последовательных разделителей считаются одним.
Вес сегментов постепенно уменьшается слева направо.
При встрече любого недопустимого символа сравнение обрывается, а последующее содержимое не учитывается.
Если число сегментов различается, недостающие сегменты дополняются'0'.
Пустая или недопустимая строка считается номером версии'0'.
Например,'1.1'и'1.1.0'— одинаковые номера версий.
Например,'1.1'и'1.1-0'— одинаковые номера версий.
Например,'1.1'и'1-1'— одинаковые номера версий.
Например,'1.0'и'1 0'(между 1 и 0 стоит пробел) — одинаковые номера версий.
Например,'1.0'больше'0.99999'.
Функцию можно использовать в XUI.
Пример
-- "1.5", "1.05" и "1.005" — одна и та же версия
-- "1.5", "1.50" и "1.500" — три разных номера версий
-- "1.11" больше "1.5"
-- "1.52" равно "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)