String Compare
Revision as of 16:29, 25 May 2007 by Xaviar Czervik (talk | contribs)
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;
}