比较版本(字符串)

时间:2015-06-19 16:40:53

标签: java string version

我不确定如何比较两个版本字符串,并在版本名称中包含对“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,这意味着它是一个版本。

有什么建议吗?感谢。

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);
    // }
}
[...]

这应该是工作。