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

Kotlin如何通过运算符重载与for循环移除单词中的指定字符

问题核心错误分析

  • 重载逻辑倒置:当前String.minus()实现没有处理原字符串,反而对入参filter1做操作,完全不符合「原字符串移除指定字符」的需求
  • 入参类型不匹配:重载方法接收的是String类型参数,但实际使用时想要传入单个Char类型的待移除字符
  • 循环逻辑无意义:main函数中的for循环仅调用了Char.minus(),没有存储运算结果,也没有输出,执行后无任何效果
  • 未满足要求:当前实现既没有用for循环做字符过滤逻辑,也没有正确实现运算符重载的业务语义

正确实现思路

  1. 重载String的minus运算符,入参为待移除的Char类型字符
  2. 在重载方法内部使用for循环遍历原字符串的每一个字符
  3. 遍历过程中跳过和待移除字符相等的字符,将剩余字符拼接为新字符串返回
  4. 直接使用字符串 - 待移除字符的语法调用重载运算符即可得到结果

可运行的实现代码

// 重载String的-运算符,接收Char类型的待移除字符
operator fun String.minus(charToRemove: Char): String {
    var result = ""
    // 使用for循环遍历原字符串所有字符
    for (c in this) {
        // 仅保留和待移除字符不相等的字符
        if (c != charToRemove) {
            result += c
        }
    }
    return result
}

fun main() {
    val wortHW1 = "Hallo"
    val wortHW2 = "Hallo World"
    
    // 调用重载的-运算符移除字符l
    val result1 = wortHW1 - 'l'
    val result2 = wortHW2 - 'l'
    
    println(result1) // 输出:Hao
    println(result2) // 输出:Hao Word
}

额外说明

如果需要一次移除多个指定字符,只需调整重载方法的入参为字符串或字符集合,内部循环判断逻辑做对应调整即可,核心的for循环遍历+运算符重载的逻辑不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:00