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
相关产品推荐
相关产品推荐

