Сравните версию строки в заводной - PullRequest
9 голосов
/ 11 октября 2011

Эй, я создал скрипт Groovy, который будет извлекать номера версий некоторых папок. Затем я хотел бы сравнить номера версий и выбрать самые высокие.

Я получил скрипт для запуска через папку dir, а затем получил версии в следующем формате: 02.2.02.01

Так что я мог бы получить что-то вроде этого:

  • 02.2.02.01
  • 02.2.02.02
  • 02.2.03.01

У меня их нет в списке, но вот так:

baseDir.listFiles().each { file -> 
  def string = file.getName().substring(5, 15)
  // do stuff
}

Также я проверял, что Groovy может сравнивать их с оператором >, и это возможно! Но теперь мне нужно выбрать тот, у которого самая высокая версия

Ответы [ 11 ]

0 голосов
/ 29 апреля 2016

Вот немного измененная версия вклада Никиты:

List versions = [ '02.2.02.01', '02.2.02.02', '02.2.03.01']
String mostRecentVersion = versions.sort {a, b ->
  def a1 = a.tokenize('.')*.toInteger(), b1 = b.tokenize('.')*.toInteger()   

  for (i in 0..<[a1.size(), b1.size()].min()){      
    if (a1[i] != b1[i]) {
      return a1[i] <=> b1[i]   
    }
  }
}[-1]

assert mostRecentVersion == '02.2.03.01'
...