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

Kotlin中如何在两个字符之间分割文本提取指定字段值

Kotlin 提取指定字段值的实现方法

示例输入字符串:base_id:94, user_id: 320903, is_Active=1

以下提供两种常用实现方式,可根据实际场景选择:


方案1:正则匹配(推荐用于键值对提取场景)

直接匹配user_id:后到分隔符前的目标值,代码简洁且容错性更高:

val input = "base_id:94, user_id: 320903, is_Active=1"
// 正则说明:匹配user_id:后任意个空格,再捕获连续数字
val userIdRegex = Regex("user_id:\\s*(\\d+)")
val userId = userIdRegex.find(input)?.groupValues?.get(1)

println(userId) // 输出:320903

方案2:字符串分割(通用双标记间文本提取)

如果你需要通用的「两个字符/标记之间取内容」的能力,可以用如下扩展函数实现:

/**
 * 提取字符串中[start]和[end]两个标记之间的文本
 * @param start 起始标记
 * @param end 结束标记
 * @param ignoreCase 是否忽略大小写,默认不忽略
 * @return 匹配到的文本,匹配失败返回null
 */
fun String.substringBetween(start: String, end: String, ignoreCase: Boolean = false): String? {
    // 查找起始标记位置
    val startIndex = indexOf(start, ignoreCase = ignoreCase).takeIf { it != -1 } ?: return null
    val contentStart = startIndex + start.length
    // 从内容起始位置开始查找结束标记位置
    val endIndex = indexOf(end, startIndex = contentStart, ignoreCase = ignoreCase).takeIf { it != -1 } ?: return null
    // 截取内容并去除前后空格
    return substring(contentStart, endIndex).trim()
}

// 调用示例
val input = "base_id:94, user_id: 320903, is_Active=1"
val userId = input.substringBetween("user_id:", ",")

println(userId) // 输出:320903

注意:如果输入字符串格式有调整,对应修改分隔标记或者正则规则即可适配

内容的提问来源于stack exchange,提问作者Mehmet Gür

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:04