본문으로 건너뛰기

두 버전 번호 비교 (string.compare_version)

선언

비교 결과 = string.compare_version(버전 번호 A, 버전 번호 B)

매개변수

  • 버전 번호 A, 버전 번호 B
    문자열. 비교할 두 버전 번호입니다.

반환값

  • 비교 결과
    정수. 버전 번호 A가 버전 번호 B보다 크면 1, 작으면 -1, 같으면 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)