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

如何在Kotlin中统计字符串替换次数?

我的实现方案与问题总结

我之前是这么完成这个需求的:

val a = listOf("foo bar", "foo bar baz", "bar", "bar") 
val b = a.count { it.contains("bar") } 
val aa = a.map { it.replace("bar", "baz") } 
var c = aa.count { it.contains("bar") } 
println("replaced: ${b-c}")

不过这种实现的效率确实不高——我们前后一共遍历了三次列表:第一次统计包含"bar"的元素数量,第二次把所有"bar"替换成"baz"生成新列表,第三次再统计新列表里还包含"bar"的元素数量。当列表规模比较大的时候,这种多次遍历的开销会很明显。

另外顺带提个小细节:在Java/Kotlin里用正则匹配空白字符确实容易踩坑。比如:

  • 要匹配所有类型的空白字符(空格、制表符、换行符等),得用\\s(字符串里要写双反斜杠,不然会被当成转义字符解析);
  • 要是只需要匹配普通空格,直接写空格就行;
  • 匹配连续的空白字符则用\\s+。
    刚开始用的时候很容易在转义上出错,这点得格外注意。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:29