Сравнение строк с номерами версий (главная, малая, ревизия, бета)

У меня есть приложение, которое связывается с прошивкой устройства. Поскольку есть изменения в прошивке, она имеет формат с версией{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 цифры для каждого уровня). Проблема в том, что

My code is difficult to read (>40 lines and 3 methods) I am sure, there is a elegant solution to this (maybe using regex?) I want to have a wildcard 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 строк кода и не очень читабелен (поэтому я и ищу лучший способ сделать это) ,

Ответы на вопрос(3)

Ваш ответ на вопрос