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

Kotlin字符串替换问题:将$包裹文本替换为<i>标签形式

解决Kotlin中$包裹字符串替换为标签的问题

你的代码问题在于:把所有$都替换成了<i>,然后在末尾追加</i>,这导致每个结尾的$变成了<i>,还多了一个多余的</i>,完全没实现成对替换的需求。

正确的做法是用正则表达式匹配成对的$...$结构,捕获中间内容后替换为<i>内容</i>。

修正后的代码

fun main(args: Array<String>) {
    val incomingString = "abc 123 \$Lorem$,  \$ipsum$, \$xyz$ 547"
    // 正则匹配$开头结尾的内容,非贪婪模式避免跨多个$区间匹配
    val finalString = incomingString.replace(Regex("\\$(.*?)\\$"), "<i>$1</i>")
    println(finalString)
}

正则规则说明

  • \\$:匹配字符$(正则中$是特殊字符,需要转义;Kotlin字符串里要额外加一层反斜杠,也可以用三重引号字符串"""(\$)(.*?)\$""",无需额外转义)
  • (.*?):非贪婪捕获组,只匹配到最近的下一个$,避免把多个$区间的内容合并成一组
  • <i>$1</i>:用捕获到的内容($1对应捕获组的内容)替换原有的$...$结构

最终输出

abc 123 <i>Lorem</i>,  <i>ipsum</i>, <i>xyz</i> 547

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:15:38