String Compare
The following code returns 1, -1 or 0. The 1 and -1 are essentially random, however it will return the same value every time the script is executed. 0 Is returned when, and only when, the strings are exactly equal.
integer compare(string s1, string s2) {
if (s1 == s2) {
return 0;
} else if (llStringLength(s1) < llStringLength(s2)) {
return 1;
} else if (llStringLength(s1) > llStringLength(s2)) {
return -1;
} else {
if (llStringLength(s1) > 32) {
s1 = llMD5String(s1, 0);
s2 = llMD5String(s2, 0);
}
integer i = 0;
list l1 = llParseString2List(s1, [""], []);
list l2 = llParseString2List(s2, [""], []);
s1 = llStringToBase64(s1);
s2 = llStringToBase64(s2);
string com = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm=+";
integer a;
integer b;
while (i < llStringLength(s1)) {
a = llSubStringIndex(com, llList2String(l1, i));
b = llSubStringIndex(com, llList2String(l2, i));
if (a < b) {
return -1;
} else if (a > b) {
return 1;
}
i++;
}
}
return 0;
}