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

Kotlin如何将分号分隔字符串转换为范围并优化现有实现

优化方案

核心优化点

  • 替换全量分割为带limit限制的分割:最多分割为3段,匹配你只需要前两段的需求,不需要遍历处理字符串后半段无关内容,字符串越长性能提升越明显
  • 移除多余的dropLast操作,直接取前2个元素,逻辑更直观
  • 可选增加边界校验,避免输入格式不符合要求时抛出数组越界、数值转换异常
  • 用解构赋值替代硬编码下标取值,语义更清晰,可读性更强

代码实现

确定输入格式绝对合法的最简版本

如果你的业务场景可以100%保证输入一定是数值;数值;数值的格式,可以用这个版本,代码简洁性能最优:

val (start, end) = "10;15;1".split(';', limit = 3)
    .take(2)
    .map { it.toBigDecimal() }
val someRange = start..end

带容错的通用版本

如果输入格式可能不符合要求,建议增加异常处理逻辑,避免运行时崩溃:

val input = "10;15;1"
val someRange = runCatching {
    val parts = input.split(';', limit = 3)
    require(parts.size >= 2) { "输入至少需要包含2个分号分隔的数值" }
    parts[0].toBigDecimal() .. parts[1].toBigDecimal()
}.getOrElse {
    // 这里可以根据业务需求自定义处理逻辑,比如返回默认范围、抛出业务异常等
    throw IllegalArgumentException("范围解析失败: ${it.message}", it)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 00:06:04