如何在groovy中基于数字对字母数字进行排序?

如何在groovy中基于数字对字母数字进行排序?,groovy,Groovy,如何使用groovy根据数值对字母数字值进行排序?例如:我有一个值列表[NAC-1、MAK-4、NAC-5、LOP-2、MAK-3,…] 我想从列表(NAC-5)中获取最高值。我想根据数值对列表进行排序。请告知 我试着用下面的代码 List1.sort{ a,b -> def n1 = (a =~ /\d+/)[-1] as Integer def n2 = (b =~ /\d+/)[-1] as Integer } 它可能只是: def l = ['NAC-1','MAK-4','NA

如何使用groovy根据数值对字母数字值进行排序?例如:我有一个值列表[NAC-1、MAK-4、NAC-5、LOP-2、MAK-3,…] 我想从列表(NAC-5)中获取最高值。我想根据数值对列表进行排序。请告知

我试着用下面的代码

List1.sort{ a,b ->
def n1 = (a =~ /\d+/)[-1] as Integer
def n2 = (b =~ /\d+/)[-1] as Integer
}
它可能只是:

def l = ['NAC-1','MAK-4','NAC-5','LOP-2','MAK-3',]
l.sort{ a,b -> -(((a =~ /\d+/)[-1] as Integer)  <=> ((b =~ /\d+/)[-1] as Integer))
}

l.sort{-(它[-1]为整数)}
应该用“只有当数字都是个位数时,这才有效”来警告这一点。
def l = ['NAC-1','MAK-4','NAC-5','LOP-2','MAK-3',]
l.sort { a, b -> 
    (a,b) = [a, b].collect { (it =~ /\d+/)[-1] as Integer }
    b <=> a
}
l.sort { - ( it[-1] as Integer ) } // will work for single digit number only