StringReverse
Revision as of 14:38, 22 January 2015 by ObviousAltIsObvious Resident (talk | contribs) (<lsl> tag to <source>)
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | User-Defined Functions | Void's User Page |
User-Defined Function: string uStringReverse( string vStrSrc );
Returns a string that is vStrSrc with the characters in reverse order
- vStrSrc: source string to reverse
Smaller Code:
- LSO: 158 bytes
- MONO: 512 bytes
/*//-- Reverse String Order (small version) --//*/
string uStringReverse( string vStrSrc ){
integer vIntCnt = llStringLength( vStrSrc );
while (vIntCnt){
vStrSrc = llDeleteSubString( vStrSrc, vIntCnt, vIntCnt ) +
llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
}
return vStrSrc;
}
/*//-- Anti-License Text --//*/
/*// Contributed Freely to the Public Domain without limitation. //*/
/*// 2012 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/
/*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/
/*//-- --//*/
Faster Code:
- LSO: 184 bytes
- MONO: 512 bytes
string uStringReverse( string vStrSrc ){
integer vIntCnt = llStringLength( vStrSrc );
while (vIntCnt){
vStrSrc += llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
}
return llGetSubString( vStrSrc, llStringLength( vStrSrc ) >> 1, 0xFFFFFFFF );
}
/*//-- Anti-License Text --//*/
/*// Contributed Freely to the Public Domain without limitation. //*/
/*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/
/*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/
/*//-- --//*/
Caveats
- The "Faster" version doubles the string size internally, and is more likely to cause a stack/heap collision(script crash) with large strings and/or limited free memory