比较版本(字符串)
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);
// }
}
[...]
这应该是工作。
我不确定如何比较两个版本字符串,并在版本名称中包含对 "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);
// }
}
[...]
这应该是工作。