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

如何使用Kotlin String的get方法批量获取多个字符?

解决方案:Kotlin中一次获取字符串多个指定索引的字符

好问题!Kotlin的String类原生的get()方法(或者等价的下标语法str[index])确实只支持单个索引参数,没法直接传入多个索引值。不过我们有几种简洁的方式实现你想要的效果,下面一一说明:

方法一:用map+joinToString快速实现

这是最直接的写法,不需要额外定义函数,利用标准库的API就能完成:

val str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
// 定义需要获取的字符索引列表
val targetIndices = listOf(8, 11, 14, 21, 4, 24, 14, 20)
// 遍历索引转成对应字符,再拼接成字符串
println(targetIndices.map { str[it] }.joinToString("")) // 输出:ILOVEYOU

这里的str[it]和str.get(it)是完全等价的,Kotlin允许用下标语法来替代get()方法的调用,写法更简洁。

方法二:自定义扩展函数,贴近你最初的调用设想

如果你希望调用方式完全像你写的str.get(8,11,...)那样,可以给String类扩展一个支持可变参数的get方法:

// 给String类扩展一个接受多个索引参数的get方法
fun String.get(vararg indices: Int): String {
    return indices.map { this[it] }.joinToString("")
}

// 现在可以直接按你想要的方式调用了
val str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
println(str.get(8, 11, 14, 21, 4, 24, 14, 20)) // 输出:ILOVEYOU

这个扩展函数会接收任意数量的索引参数,内部把每个索引对应的字符收集起来,最后拼接成完整的字符串返回,完美匹配你最初的需求。

补充说明

为什么原生的get()方法不能直接传多个参数?因为Kotlin中String类的get方法是为了支持下标运算符重载而设计的,它的签名是operator fun get(index: Int): Char,只能接受单个Int类型的索引参数,所以直接传入多个参数会触发编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:37:34