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

Kotlin的replace函数如何传入函数作为参数实现重复字符替换?

连续重复字符替换的Kotlin实现

你可以直接使用Kotlin正则的带转换函数的replace重载实现,和JS版本逻辑完全对齐,实现代码如下:

fun repeatedLetters(s: String): String {
    // 正则和JS逻辑一致,注意Kotlin字符串中反斜杠需要双重转义
    return Regex("(.)(\\1+)").replace(s) { matchResult ->
        val char = matchResult.groupValues[1]
        val repeatSuffix = matchResult.groupValues[2]
        // 总重复次数 = 后缀长度 + 第一组的1个字符
        "$char${repeatSuffix.length + 1}"
    }
}

测试示例

fun main() {
    val input = "aaabccccddefff"
    println(repeatedLetters(input)) // 输出结果:a3bc4d2ef3
}

关键差异说明

  • Kotlin普通字符串中的反斜杠需要双重转义,因此JS正则里的\1要写成\\1
  • 替换回调的入参是MatchResult对象,捕获组内容存在groupValues列表中,索引从0开始(索引0为完整匹配串,1对应第一个捕获组,2对应第二个捕获组)

内容的提问来源于stack exchange,提问作者J F Fitch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:04