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

Kotlin如何用符合语言习惯的方式从字符串中获取指定字符的随机位置

Kotlin 简洁实现方案

你可以直接利用Kotlin的集合扩展函数一行实现,无需手动写循环和维护中间列表:

val randPos = data.indices.filter { data[it] == 'T' }.random()
  • data.indices 直接获取字符串所有合法下标的IntRange
  • filter 筛选出对应位置字符为'T'的下标,直接生成目标列表
  • 最后调用random()方法获取随机下标,和你原有逻辑完全一致

空安全优化

如果需要处理字符串中不存在'T'的边界场景,可以用randomOrNull()避免抛出异常,还可以配合Elvis运算符给默认值:

// 无匹配时返回null
val randPos = data.indices.filter { data[it] == 'T' }.randomOrNull()

// 无匹配时返回默认值-1
val randPos = data.indices.filter { data[it] == 'T' }.randomOrNull() ?: -1

可选等价写法

你也可以用mapIndexedNotNull实现,逻辑等价,适合同时需要处理字符和下标的场景:

val randPos = data.mapIndexedNotNull { idx, char -> idx.takeIf { char == 'T' } }.random()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 13:15:08