在Groovy中比较库版本字符串

6jjcrrmo  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(238)

假设我有一个库版本的列表:
List myList = ["4.9"]
我需要检查列表的第一个元素是否等于或大于“4. 11”。
我是这样做的:


# compateTo() returns 0 if the caller string equals to the argument string

# compateTo() returns > 0 if the caller string is greater than the argument string

if (myList[0].compareTo("4.11") >= 0) {
    println("equal or greater than 4.11")
} else {
    println("less than 4.11")
}

然而,让我们考虑这样一个案例:List myList = ["4.9"]
逐字符比较两个字符串,得到9,而1,由于9大于1,因此返回equal or greater than 4.11,这是不正确的。
最好的解决方法是什么?我考虑了一下:

def strToDecimal = Double.parseDouble(myList[0])

得到一个十进制数,比较两个十进制数4.9和4.11,但问题是一样的。
我不能使用任何需要import语句的语句。

uemypmqf

uemypmqf1#

如果您使用的是Java〉= 9,我会使用Version类:

// List myList = ["4.11", "4.12", "4.13", "5.1"]
List myList = ["4.9"]
if (java.lang.module.ModuleDescriptor.Version.parse(myList[0]).compareTo(java.lang.module.ModuleDescriptor.Version.parse("4.11")) >= 0) {
    println("equal or greater than 4.11")
} else {
    println("less than 4.11")
}

如果你的Java版本〈= 9,那么你可以 checkout 这个question。有一些关于如何解决你的问题的想法。

相关问题