1. 简介

字符串是编程语言中最基础的数据类型之一。因此,掌握字符串的基本操作和常见使用场景非常重要。本文将介绍几种在 Kotlin 中统计字符串中某个特定字符出现次数的方法。


2. 使用 count() 方法

Kotlin 中的 String 本质上是字符的序列。利用这一点,我们可以使用标准库中的扩展函数 count() 来统计满足条件的字符数量。该函数接受一个 lambda 表达式作为参数,用于判断是否匹配目标字符。

✅ 示例代码如下:

val string = "hello world, baeldung"

assertEquals(2, string.count { it == 'e' })

该方法简洁高效,是推荐首选的方式之一。


3. 使用循环遍历

最直观的方法之一是通过 for 循环遍历字符串中的每一个字符,并在匹配目标字符时增加计数器。

✅ 示例代码如下:

val string = "hello world, baeldung"
var counter = 0
for (c in string) {
    if (c == 'e') {
        counter++
    }
}

assertEquals(2, counter)

这种方式逻辑清晰,适用于对性能要求不高的场景。


4. 使用 replace() 方法

我们可以通过 replace() 方法将目标字符从字符串中移除,然后比较原字符串和替换后的字符串长度差,从而得出目标字符出现的次数。

✅ 示例代码如下:

val string = "hello world, baeldung"
val count = string.length - string.replace("e", "").length

assertEquals(2, count)

⚠️ 注意:该方法虽然简洁,但会创建新的字符串对象,可能影响性能。


5. 使用正则表达式

使用 PatternMatcher 类可以将目标字符编译为正则表达式,然后通过匹配器查找所有匹配项并计数。

✅ 示例代码如下:

val string = "hello world, baeldung"
val matcher = Pattern.compile("e").matcher(string)
var counter = 0

while (matcher.find()) {
    counter++
}

assertEquals(2, counter)

该方法适用于需要更复杂匹配逻辑的场景,例如匹配多个字符或模式。


6. 使用 Map 集合统计

我们可以使用 Map 来存储每个字符出现的次数。遍历整个字符串,将字符作为 key,出现次数作为 value。

✅ 示例代码如下:

val string = "hello world, baeldung"
val occurrencesMap = mutableMapOf<Char, Int>()
for (c in string) {
    occurrencesMap.putIfAbsent(c, 0)
    occurrencesMap[c] = occurrencesMap[c]!! + 1
}

assertEquals(2, occurrencesMap['e'])

这种方式适合一次性统计多个字符的出现次数,常用于字符频率分析场景。


7. 总结

本文介绍了多种在 Kotlin 中统计字符串中特定字符出现次数的方法,包括:

  • 使用 count()(简洁高效)
  • 使用 for 循环(逻辑清晰)
  • 使用 replace()(一行代码解决)
  • 使用正则表达式(灵活匹配)
  • 使用 Map(批量统计)

每种方法各有优劣,可以根据实际需求选择。通常情况下推荐使用 count(),代码简洁且语义清晰。

所有示例代码均可在 GitHub 仓库 上找到。


原始标题:Count Occurrences of a Character in a String in Kotlin