2016-10-04 59 views
0

排序文字+数字的字符串数组我有数组是这样的:Groovy:在如何通过最后一个数字

def arr = [ 
     "v3.1.20161004.0", 
     "v3.1.20161004.1", 
     "v3.1.20161004.10", 
     "v3.1.20161004.11", 
     "v3.1.20161004.2", 
     "v3.1.20161004.3", 
     "v3.1.20161004.30", 
    ] 

我需要得到这个:

def arr = [ 
     "v3.1.20161004.0", 
     "v3.1.20161004.1", 
     "v3.1.20161004.2", 
     "v3.1.20161004.3", 
     "v3.1.20161004.10", 
     "v3.1.20161004.11", 
     "v3.1.20161004.30", 
    ] 

如何通过最后的数字排序呢'。X' ?

回答

2

可以令牌化每串上.,然后抓住最后一个元素作为一个整数,并进行排序在这个(通过false返回一个新的列表)

def newArray = arr.sort(false) { it.tokenize('.')[-1] as Integer } 
+0

谢谢!这是美丽的解决方案! – fred05

2

当数组排序,你可以定义排序关闭。在这种情况下,您可以分割点并使用飞船操作员进行排序:

arr.sort { a, b -> a.tokenize('.').last().toInteger() <=> b.tokenize('.').last().toInteger() } 
+0

感谢您的快速响应,这对我来说非常有用。 – fred05

相关问题