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

Kotlin正则替换如何保留匹配文本的大小写?

实现保留大小写的单次正则替换方案

可以通过Kotlin正则的带lambda的replace方法实现,不用拆分多个替换逻辑,核心思路是匹配目标单词时忽略大小写,再根据原匹配文本的大小写特征动态生成替换内容:

基础版本(处理首字母大小写)

fun replaceText(aText: String): String {
    // 忽略大小写匹配"gonna"单词
    val targetRegex = """\bgonna\b""".toRegex(RegexOption.IGNORE_CASE)
    return targetRegex.replace(aText) { match ->
        val originalWord = match.value
        val baseReplacement = "going to"
        
        // 原单词首字母大写,替换后也首字母大写;否则用小写替换文本
        if (originalWord.first().isUpperCase()) {
            baseReplacement.replaceFirstChar { it.uppercase() }
        } else {
            baseReplacement
        }
    }
}

扩展版本(兼容全大写场景)

如果要处理全大写的"GONNA"并替换为"GOING TO",可以再加一层判断:

fun replaceText(aText: String): String {
    val targetRegex = """\bgonna\b""".toRegex(RegexOption.IGNORE_CASE)
    return targetRegex.replace(aText) { match ->
        val originalWord = match.value
        val baseReplacement = "going to"
        
        when {
            originalWord.all { it.isUpperCase() } -> baseReplacement.uppercase()
            originalWord.first().isUpperCase() -> baseReplacement.replaceFirstChar { it.uppercase() }
            else -> baseReplacement
        }
    }
}

原理说明

  1. 用RegexOption.IGNORE_CASE让正则一次性匹配所有大小写变体的目标单词
  2. 替换时通过lambda获取原匹配的文本,根据它的大小写格式调整替换内容
  3. 不管是句首大写、全小写还是全大写的情况,都能一次处理完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:50:36