Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class StringUtil {
- /**
- * Compare version.
- *
- * versionA > versionB = 1
- * versionA == versionB = 0
- * versionA < versionB = -1
- *
- * @return a negative integer, zero, or a positive integer as this object
- * is less than, equal to, or greater than the specified object.
- */
- public static int versionCompare(String versionA, String versionB) throws NumberFormatException {
- if(Strings.isNullOrEmpty(versionA) || Strings.isNullOrEmpty(versionB))
- if (Strings.isNullOrEmpty(versionA))
- return Strings.isNullOrEmpty(versionB) ? 0 : -1;
- else
- return 1;
- String[] verA = versionA.split("\\.");
- String[] verB = versionB.split("\\.");
- for (int i = 0; i < verA.length; i++) {
- if(i >= verB.length)
- return 1;
- int a = Integer.parseInt(verA[i]);
- int b = Integer.parseInt(verB[i]);
- if(a == b) continue;
- return a < b ? -1 : 1;
- }
- return verA.length == verB.length ? 0 : -1;
- }
- @Test
- public void versionCompare() throws Exception {
- assertEquals(StringUtil.versionCompare(null, null), 0);
- assertEquals(StringUtil.versionCompare(null, "1.2"), -1);
- assertEquals(StringUtil.versionCompare("1.2", null), 1);
- assertEquals(StringUtil.versionCompare("", ""), 0);
- assertEquals(StringUtil.versionCompare(null, ""), 0);
- assertEquals(StringUtil.versionCompare("", null), 0);
- assertEquals(StringUtil.versionCompare(null, "ver"), -1);
- assertEquals(StringUtil.versionCompare("ver", null), 1);
- assertEquals(StringUtil.versionCompare("1.2", "1.1"), 1);
- assertEquals(StringUtil.versionCompare("1.2", "1.2"), 0);
- assertEquals(StringUtil.versionCompare("1.2", "1.3"), -1);
- assertEquals(StringUtil.versionCompare("1.2", "1.3.1"), -1);
- assertEquals(StringUtil.versionCompare("1.2", "1.2.1"), -1);
- assertEquals(StringUtil.versionCompare("1.2.1", "1.3"), -1);
- exception.expect(NumberFormatException.class);
- StringUtil.versionCompare("1.i.1", "1.3");
- exception.expect(NumberFormatException.class);
- StringUtil.versionCompare("versionA", "versionB");
- exception.expect(NumberFormatException.class);
- StringUtil.versionCompare("1-2-1", "1-3");
- }
- }
Add Comment
Please, Sign In to add comment