Сравнение строк с номерами версий (главная, малая, ревизия, бета)
У меня есть приложение, которое связывается с прошивкой устройства. Поскольку есть изменения в прошивке, она имеет формат с версией{major}.{minor}.{revision}[beta[{beta}]]
, Чтобы дать вам несколько примеров, текущая версия0.4.7beta
который будет сопровождаться0.4.7beta2
и иногда0.4.7
, с последующим0.4.8beta
, Формат контроля версий прошивки, к сожалению, не находится под моим контролем, поэтому я не могу его изменить.
Мне нужен способ сравнения прошивок друг с другом. В основном мне нужна функция
boolean isFirmwareNewer(String testFW, String baseFW);
Что я сделал до сих пор, чтобы преобразовать этот формат в простойint
, Так0.4.7beta2
станет00040702
(2 цифры для каждого уровня). Проблема в том, что
0.0.0
which is newer by definition
This handles the beta versions incorrect (0.4.7beta2
is not newer than 0.4.7
). That is easy to account for (if (testFW.contains("beta")) testFWValue -= 100;
, but it's not really elegant as well.
Как вы, ребята, делаете это нормально (или как бы вы это делали)?
Если хотите, я могу прикрепить код, с которым я сейчас работаю, но, как я уже сказал, он содержит 40 строк кода и не очень читабелен (поэтому я и ищу лучший способ сделать это) ,