Groovy 字符串整数范围

Groovy string integer range

如何在表示整数的字符串上使用范围运算符?

真正的问题出现在字符串表示大于 9 的整数时。范围会将字符串视为数字列表,并且仅使用第一个而不是将整个字符串转换为整数。

String start = '1'
String end = '11'
println "Range over strings"
(start..end).each{println it}
println "Range over integers"
(start.toInteger()..end.toInteger()).each{println it}

结果:

Range over strings 1

Range over integers 1 2 3 4 5 6 7 8 9 10 11

我希望保持代码简单,并尽可能避免使用过多类型转换,因为我需要结果列表以字符串形式包含数字。

您需要进行类型转换,也许自定义范围是个好主意:

class CustomRange extends IntRange {
    CustomRange(String start, String end) {
        super(start.toInteger(), end.toInteger())
    }
}