比较版本号字符串(主要、次要、修订版、测试版)
2022-09-03 17:24:23
我有一个与设备固件通信的应用程序。由于固件有更改,因此使用格式进行版本控制。举几个例子,当前版本是后面跟着,偶尔跟着,然后是。不幸的是,固件的版本控制格式不在我的控制之下,因此我无法更改它。{major}.{minor}.{revision}[beta[{beta}]]
0.4.7beta
0.4.7beta2
0.4.7
0.4.8beta
我需要一种相互比较固件的方法。基本上,我需要一个函数
boolean isFirmwareNewer(String testFW, String baseFW);
到目前为止,我所做的是将此格式转换为简单的.所以会变成(每个级别2位数字)。问题是,int
0.4.7beta2
00040702
- 我的代码难以阅读(>40行和3种方法)
- 我敢肯定,有一个优雅的解决方案(也许使用正则表达式?
- 我想要一个根据定义更新的通配符
0.0.0
- 这将处理不正确的测试版(不比 )这很容易解释(,但它也不是很优雅。
0.4.7beta2
0.4.7
if (testFW.contains("beta")) testFWValue -= 100;
你们通常如何做到这一点(或者你会怎么做)?
如果你愿意,我可以附加我目前正在使用的代码,但正如我所说,它是>40行代码,并不真正可读(这就是我正在寻找更好的方法来做到这一点的原因)。