You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中从四段式版本号中可靠提取主版本和次版本号组合

解决方案

你之前的写法问题在于固定了截取长度,依赖主、次版本的位数,只要主版本或次版本的位数发生变化就会出现截断错误。通用的实现方式有两种,都可以完全适配任意位数的主、次版本场景:

方法1:按分隔符拆分(推荐,可读性更高)

核心逻辑是将版本号按.拆分为多个片段,直接取前两个片段拼接即可:

fun main() {
    val appVersion = "15.2.855.15"
    // 按.拆分,limit设为3可以不用处理后面的片段,提升性能
    val versionParts = appVersion.split(".", limit = 3)
    val majorMinorVersion = "${versionParts[0]}.${versionParts[1]}"
    println(majorMinorVersion) // 输出:15.2
}

如果需要兼容格式不规范的版本号(比如只有1段、没有次版本的情况),可以增加防御判断:

fun getMajorMinorVersion(version: String): String {
    val parts = version.split(".")
    return when {
        parts.size >= 2 -> "${parts[0]}.${parts[1]}"
        parts.size == 1 -> "${parts[0]}.0" // 次版本缺省默认补0,可根据需求调整
        else -> "0.0" // 空输入的默认返回值,可根据需求调整
    }
}

// 测试用例
fun main() {
    println(getMajorMinorVersion("6.23.5.1")) // 输出:6.23
    println(getMajorMinorVersion("3.1")) // 输出:3.1
    println(getMajorMinorVersion("2")) // 输出:2.0
}

方法2:正则匹配

如果更偏好简洁写法,可以用正则匹配开头的数字.数字片段:

private val majorMinorPattern = "^(\\d+\\.\\d+)".toRegex()
fun getMajorMinorByRegex(version: String): String {
    return majorMinorPattern.find(version)?.value ?: "0.0"
}

内容的提问来源于stack exchange,提问作者cynicalswan77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:27:03