Groovy:如何按最后一位数字排序文本+数字的字符串数组

时间:2016-10-04 14:54:08

标签: 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 个答案:

答案 0 :(得分:3)

您可以对result上的每个字符串进行标记,然后将最后一个元素作为整数获取,并对此进行排序(传递.以返回新列表)

false

答案 1 :(得分:2)

排序数组时,您可以定义排序闭包。在这种情况下,您可以使用太空船操作员分割点并进行排序:

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