描述:
String string1 = "2.1.4";
String string2 = "2.1.4.0.5";
其中,2.1.4和2.1.4.0大小相等。
string1<string2,返回1;string1>string2,返回-1。否则返回0
踩坑点:
Java String.split()用法时,对于.\和*等转义字符,必须得加\\。
方法1:
@org.junit.Test
public void test() {
//string1<string2,返回1;string1>string2,返回-1。否则返回0
String string1 = "2.1.4";
String string2 = "2.1.4.0.5";
int result = compare(string1, string2);
System.out.println("result:" + result);
}
public int compare(String string1, String string2) {
int result = 0;
String[] split1 = string1.split("\\.");
int length1 = split1.length;
String[] split2 = string2.split("\\.");
int length2 = split2.length;
int minLen = split1.length > split2.length ? split2.length : split1.length;
for (int index = 0; index < minLen; index++) {
if (Integer.valueOf(split1[index]) > Integer.valueOf(split2[index])) {
result = -1;
return result;
} else if (Integer.valueOf(split1[index]) < Integer.valueOf(split2[index])) {
result = 1;
return result;
}
}
if (length1 < length2) {
for (int index = length1; index < length2; index++) {
if (Integer.valueOf(split2[index]) > 0) {
result = 1;
return result;
} else if (Integer.valueOf(split2[index]) < 0) {
result = -1;
return result;
}
}
}
if (length1 > length2) {
for (int index = length2; index < length1; index++) {
if (Integer.valueOf(split1[index]) > 0) {
result = 1;
return result;
} else if (Integer.valueOf(split1[index]) < 0) {
result = -1;
return result;
}
}
}
return result;
}
方法2:
@org.junit.Test
public int test() {
//string1<string2,返回1;string1>string2,返回-1。否则返回0
String string1 = "2.1.4";
String string2 = "2.1.4.0";
String[] split1 = string1.split("\\.");
String[] split2 = string2.split("\\.");
for (int index = 0; index < split1.length || index < split2.length; index++) {
int x = 0, y = 0;
if (index < split1.length) {
x = Integer.valueOf(split1[index]);
}
if (index < split2.length) {
y = Integer.valueOf(split2[index]);
}
if (x > y) {
return 1;
}
if (x < y) {
return -1;
}
}
return 0;
}