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

如何在Kotlin中从指定文本中提取特定字符串,获取DriverId与Amount的值

Kotlin 提取字符串中指定字段的实现方案

方法1:直接分割(适合格式完全固定的场景)

实现逻辑最简单,性能最优,前提是你能确保输入字符串永远是DriverId=xxx,Amount=xxx的固定格式,不会缺字段、不会变顺序。

val scanStr = "DriverId=60cb1daa20056c0c92ebe457,Amount=10.0"
// 按逗号拆分出两个键值对
val parts = scanStr.split(",")
val driverId = parts[0].split("=")[1]
val amount = parts[1].split("=")[1].toDouble() // 需要数值类型的话直接转Double

方法2:转Map存储(适合字段可扩展、顺序可能变化的场景)

如果后续可能新增其他字段,或者字段顺序不固定,可以先把整个字符串转成键值对Map,需要什么字段直接从Map取即可。

val scanStr = "DriverId=60cb1daa20056c0c92ebe457,Amount=10.0"
val resultMap = scanStr.split(",")
    .associate { pair ->
        val (key, value) = pair.split("=")
        key to value
    }
// 按需取值,不存在的key会返回null,避免数组越界崩溃
val driverId = resultMap["DriverId"]
val amount = resultMap["Amount"]?.toDouble()

方法3:正则匹配(适合输入可能包含冗余内容的场景)

如果输入字符串前后可能有其他无关字符,用正则分组匹配可以精准提取目标值,容错性最高。

val scanStr = "DriverId=60cb1daa20056c0c92ebe457,Amount=10.0"
// 正则中用两个分组分别捕获DriverId和Amount的值
val regex = """DriverId=([a-f0-9]+),Amount=(\d+\.\d+)""".toRegex()
val matchResult = regex.find(scanStr)

matchResult?.let {
    val driverId = it.groupValues[1]
    val amount = it.groupValues[2].toDouble()
    // 后续业务逻辑
} ?: run {
    // 格式不匹配的异常处理逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:45:00