我不确定如何比较两个版本字符串,并在版本名称中包含对“SNAPSHOT”的支持。
一个例子: 我有两个版本字符串,“1.9.9”和“2.0.0”。如果第二个字符串大于第一个字符串,我想返回一个布尔值(true)。我用过这个: https://stackoverflow.com/a/6702029/1442718
效果很好。
但是,这样的示例不适用于该代码: 我有两个版本字符串,“2.0.0-SNAPSHOT”和“2.0.0”。显然,SNAPSHOT是2.0.0之后的一个版本,但是这个方法不会选择它并抛出NumberFormatException,而不是返回-1,这意味着它是一个版本。
有什么建议吗?感谢。
答案 0 :(得分:1)
您可以使用以下内容:
[...]
boolean isSnapshot1 = str1.endsWith("SNAPSHOT");
boolean isSnapshot2 = str2.endsWith("SNAPSHOT");
[...]
if (...) { // if version-number are equal
if (isSnapshot1 && !isSnapshot2) { // same versions, but first is snapshot
return (1);
}
if { // same versions, but secont is snapshot
return (-1);
}
// else { Neither or both are snapshots, versions are equals -> cannot distinguish their order
return (0);
// }
}
[...]
这应该是工作。