StringReverse

From Second Life Wiki
Revision as of 14:38, 22 January 2015 by ObviousAltIsObvious Resident (talk | contribs) (<lsl> tag to <source>)
Jump to navigation Jump to search

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