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

Kotlin中统计特定字符在字符串中出现次数的实现方法咨询

Kotlin统计字符串中特定字符出现次数的实现方法

Kotlin标准库确实没有设计单独的单字符计数专属内置方法,但可以通过现有标准库提供的扩展函数非常简洁地实现需求,无需手写原始循环,也不用重复造轮子:

  • 方法1:使用count()扩展函数(最适合单字符计数场景)
    直接调用String类的count()方法,传入匹配目标字符的谓词即可,一行代码完成,时间复杂度为O(n),和手写循环效率完全一致:

    // 统计字符串中字符'a'的出现次数
    val targetStr = "apple banana"
    val aCount = targetStr.count { it == 'a' } // 运行结果为4
    

    如果需要忽略大小写匹配,可修改为:

    val aCountIgnoreCase = targetStr.count { it.equals('a', ignoreCase = true) }
    
  • 方法2:使用groupingBy() + eachCount()(适合多字符批量统计场景)
    如果需要一次性获取字符串中所有字符的出现频率,用该组合方法只需要遍历一次字符串即可生成频率Map,后续取任意字符的计数都可以直接从Map中读取:

    val targetStr = "apple banana"
    val charFrequencyMap = targetStr.groupingBy { it }.eachCount()
    // 读取字符'a'的出现次数,不存在则返回0
    val aCount = charFrequencyMap['a'] ?: 0 // 运行结果为4
    
  • 方法3:封装自定义扩展函数(适合高频使用场景)
    如果项目中经常需要用到字符计数功能,可以一次性封装扩展函数,后续全局调用即可:

    /**
     * 统计当前字符串中指定字符的出现次数
     * @param char 目标字符
     * @param ignoreCase 是否忽略大小写,默认不忽略
     * @return 字符出现次数
     */
    fun String.countChar(char: Char, ignoreCase: Boolean = false): Int {
        return count { it.equals(char, ignoreCase) }
    }
    
    // 调用示例
    val count = "Apple Banana".countChar('a', ignoreCase = true) // 运行结果为4
    

以上所有实现都基于Kotlin标准库原生能力,无需引入任何第三方依赖,代码可读性和执行效率都优于手写原始for循环。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:02