Vergleichen von Versionsnummern (Dur, Moll, Revision, Beta)
Ich habe eine Anwendung, die mit der Firmware eines Geräts kommuniziert. Da es Änderungen an der Firmware gibt, wird diese mit dem Format versioniert{major}.{minor}.{revision}[beta[{beta}]]
. Die aktuelle Version ist, um nur einige Beispiele zu nennen0.4.7beta
welches gefolgt wird von0.4.7beta2
und gelegentlich0.4.7
, gefolgt von0.4.8beta
. Das Versionsformat der Firmware ist leider nicht unter meiner Kontrolle, daher kann ich es nicht ändern.
Ich brauche eine Möglichkeit, Firmwares miteinander zu vergleichen. Grundsätzlich brauche ich eine Funktion
boolean isFirmwareNewer(String testFW, String baseFW);
Bisher habe ich dieses Format in ein einfaches Format konvertiertint
. So0.4.7beta2
wird werden00040702
(2 Ziffern für jede Ebene). Das Problem ist, dass
0.0.0
was per definitionem neuer istDies behandelt die Beta-Versionen falsch (0.4.7beta2
ist nicht neuer als0.4.7
). Das ist leicht zu erklären (if (testFW.contains("beta")) testFWValue -= 100;
, aber es ist auch nicht wirklich elegant.Wie macht ihr das normalerweise (oder wie würdet ihr es tun)?
Wenn Sie möchten, kann ich den Code anhängen, mit dem ich gerade arbeite, aber wie gesagt, es sind> 40 Zeilen Code und nicht wirklich lesbar (aus diesem Grund suche ich nach einer besseren Möglichkeit, dies zu tun).