1. 概述

在实际开发中,我们经常会遇到需要从字符串中移除某个字符的情况。需要注意的是,Kotlin 中的 String 是不可变对象,因此每次操作字符串实际上都是生成一个新的字符串。

在本教程中,我们将介绍几种在 Kotlin 中删除字符串中字符的常用方法。

2. 使用 replace 方法

字符串本质上是字符的序列。我们可以使用 replace 扩展函数将某个字符替换为空字符串,从而实现删除效果。这个方法会删除字符串中所有匹配的字符:

val string = "Ba.eldung"
assertEquals("Baeldung", string.replace(".", ""))

✅ 适用场景:需要删除所有出现的特定字符时使用。


3. 使用 filterNot 方法

Kotlin 提供了丰富的字符串操作扩展函数,filterNot 就是其中之一。它会返回一个新字符串,仅包含不满足指定条件的字符

val string = "Ba.eldung"
assertEquals("Baeldung", string.filterNot { it == '.' })

✅ 适用场景:需要根据条件灵活过滤字符时使用。


4. 使用 deleteAt 方法

如果我们需要删除指定索引位置的字符,可以借助 StringBuilder使用其 deleteAt 方法可以删除指定索引处的字符,然后通过 toString 获得新的字符串

val string = "Ba.eldung"
val stringBuilder = StringBuilder(string)
assertEquals("Baeldung", stringBuilder.deleteAt(2).toString())

⚠️ 注意:deleteAt 会修改 StringBuilder 实例本身,不是纯函数。

✅ 适用场景:需要按索引精确删除字符时使用。


5. 使用 removeRange 方法

Kotlin 提供了 removeRange 扩展函数,可以删除字符串中某个范围内的字符(左闭右开区间)

val string = "Ba.eldung"
assertEquals("Baeldung", string.removeRange(2, 3))

✅ 适用场景:需要删除一段连续字符时使用。


6. 使用 removePrefix 与 removeSuffix

Kotlin 也提供了一些更语义化的字符串操作函数。

6.1 removePrefix

如果字符串以指定前缀开头,removePrefix 会返回去掉该前缀的新字符串;否则返回原字符串

val string = "Baeldung"
assertEquals("aeldung", string.removePrefix("B"))
assertEquals("Baeldung", string.removePrefix("Z"))

6.2 removeSuffix

如果字符串以指定后缀结尾,removeSuffix 会返回去掉该后缀的新字符串;否则返回原字符串

val string = "Baeldung"
assertEquals("Baeldun", string.removeSuffix("g"))
assertEquals("Baeldung", string.removeSuffix("Z"))

✅ 适用场景:处理前缀/后缀明确的字符串时非常方便,比如文件名、URL 等。


7. 总结

本文介绍了 Kotlin 中删除字符串中字符的几种常用方法,包括:

方法 用途说明 是否推荐
replace 删除所有指定字符
filterNot 按条件过滤字符
deleteAt 删除指定索引字符
removeRange 删除指定范围字符
removePrefix / removeSuffix 删除前缀或后缀

这些方法各有适用场景,开发者可以根据具体需求选择最合适的方式。

完整示例代码可在 GitHub 上找到。


原始标题:Remove a Character From a String in Kotlin