跳至主要內容

比較兩個版本號大小 (string.compare_version)

聲明

比較結果 = string.compare_version(版本號甲, 版本號乙)

參數

  • 版本號甲, 版本號乙
    文字型,需要比較大小的兩個版本號

回傳值

  • 比較結果
    整數型,版本號甲大於版本號乙返回 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)