【发布时间】:2021-05-26 20:10:16
【问题描述】:
我需要从字符串中获取一个范围。 ; - 是一个分隔符。
所以,例如,我有字符串“10;15;1”,我需要获取从 10 到 15 的范围(忽略最后一个数字)。
预期结果:
"10;15;1" -> 10..15
所以我尝试编写这段代码。我怎样才能改善它?它看起来很糟糕而且很无用
val arr = "10;15;1".split(";").dropLast(1).map { it.toBigDecimal() }
val someRange = arr[0] .. arr[1]
【问题讨论】:
-
鉴于非常具体的要求,我根本不会说这是糟糕的代码。您可能考虑的更改包括查看是否可以对输入格式做出更少的假设;并更好地处理无效输入。此外,如果数字总是整数,那么
Int可能比BigDecimal更简单。这看起来太具体了,不值得拆分成一个单独的函数,除非你能以某种方式使其更通用。 -
我可能建议的唯一方法是不要使用 lambda,而是使用
map(String::toBigDecimal),这样代码在不失其简洁性的情况下更加自我记录。
标签: arrays string kotlin parsing range