private int newCompareTo(String comp1, String comp2) {
if (comp1.length() == 0) {
if (comp2.length() == 0) {
return 0;
}
return -1;
} else if (comp2.length() == 0) {
return 1;
}
if (TextUtils.isDigitsOnly(comp1)) {
int val1 = Integer.parseInt(comp1);
if (TextUtils.isDigitsOnly(comp2)) {
int val2 = Integer.parseInt(comp2);
return Integer.compare(val1, val2);
} else {
return comp1.compareTo(comp2);
}
} else {
int minVal = Math.min(comp1.length(), comp2.length()), sameCount = 0;
for (int i = 0;i < minVal;i++) {
char leftVal = comp1.charAt(i), rightVal = comp2.charAt(i);
if (leftVal == rightVal) {
sameCount++;
} else {
break;
}
}
if (sameCount == 0) {
return comp1.compareTo(comp2);
} else {
String newStr1 = comp1.substring(sameCount), newStr2 = comp2.substring(sameCount);
if (TextUtils.isDigitsOnly(newStr1) && TextUtils.isDigitsOnly(newStr2)) {
return Integer.compare(Integer.parseInt(newStr1), Integer.parseInt(newStr2));
} else {
return comp1.compareTo(comp2);
}
}
}
}