比较版本(字符串)

Comparing versions (strings)

我不确定如何比较两个版本字符串,并在版本名称中包含对 "SNAPSHOT" 的支持。

一个例子: 我有两个版本字符串,“1.9.9”和“2.0.0”。如果第二个字符串大于第一个字符串,我想 return 一个布尔值(真)。我用过这个:

完美运行。

但是,这样的示例不适用于该代码: 我有两个版本字符串,“2.0.0-SNAPSHOT”和“2.0.0”。显然 SNAPSHOT 比 2.0.0 晚了一个版本,但是这个方法不会把它捡起来并抛出 NumberFormatException,而不是 returning -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);
    // }
}
[...]

这应该是工作。