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

运行Kotlin自定义字符串函数时为何输出空白?

提取字符串唯一字符输出空白的问题修复

问题出在哪

Kotlin里的String是不可变类型,plus()方法不会修改原字符串,只会返回一个新的字符串实例。你用val声明的updatedString初始是空字符串,每次调用updatedString.plus(c)时,新生成的字符串根本没存回变量里,所以最后打印的还是初始的空值。

两种修复方法

方法一:改用可变变量存结果

把updatedString改成var,每次拼接后把新值赋值给它:

fun uniqueChar(s: String){
    var updatedString = ""
    s.forEach {c ->
        if (!updatedString.contains(c)){
            updatedString = updatedString.plus(c)
        }
    }
    println(updatedString)
}

方法二:用StringBuilder提升性能

频繁拼接字符串时,StringBuilder比直接用plus()更高效,能避免重复创建String实例:

fun uniqueChar(s: String){
    val sb = StringBuilder()
    s.forEach {c ->
        if (!sb.contains(c)){
            sb.append(c)
        }
    }
    println(sb.toString())
}

测试结果

调用uniqueChar("fhfnfnfjuw")会输出fhjuw,符合提取唯一字符的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:48:16