如何在Kotlin中为String类型重载'-'运算符?
在Kotlin中为String重载'-'运算符移除指定字符
要实现这个需求其实很简单,核心是用扩展函数配合Kotlin的运算符重载机制,步骤如下:
- 定义重载'-'的扩展函数
Kotlin里运算符重载需要用operator关键字,而'-'对应的函数名是minus。因为String是系统类,我们没法直接修改它的源码,所以用扩展函数给String新增这个能力:
operator fun String.minus(targetChar: Char): String { // 过滤掉所有等于targetChar的字符,返回新字符串 return this.filter { it != targetChar } }
- 测试使用
写完函数后直接像普通运算符一样用就行:
fun main() { val original = "Hello World" val result = original - 'l' println(result) // 输出:Heo Word }
关键知识点解释
operator关键字:必须加,用来标记这个函数是运算符重载函数,让Kotlin识别它对应'-'操作filter函数:Kotlin字符串的内置函数,会遍历每个字符,只保留满足it != targetChar条件的字符,返回一个新的String(原字符串不会被修改,符合Kotlin不可变优先的设计)- 扩展函数:不用修改String类的源码,就能给它新增方法,非常适合这种给系统类加功能的场景
内容的提问来源于stack exchange,提问作者Paul Schmiel
相关产品推荐
相关产品推荐

