like

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: integer like( string value, string mask );

See if one word matches part of another.
Returns an integer that is TRUE if value tested positive for mask, otherwise it is FALSE.

• string value
• string mask

You can, for example, loop through a list, passing it extracted values from the list and the mask, and it will let you pull out items from the list which are a valid match according to the mask criteria you specified.

Specification

integer like(string value, string mask) {
    integer tmpy = (llGetSubString(mask,  0,  0) == "%") | 
                  ((llGetSubString(mask, -1, -1) == "%") << 1);
    if(tmpy)
        mask = llDeleteSubString(mask, (tmpy / -2), -(tmpy == 2));

    integer tmpx = llSubStringIndex(value, mask);
    if(~tmpx) {
        integer diff = llStringLength(value) - llStringLength(mask);
        return  ((!tmpy && !diff)
             || ((tmpy == 1) && (tmpx == diff))
             || ((tmpy == 2) && !tmpx)
             ||  (tmpy == 3));
    }
    return FALSE;
}

Examples

like("Susie", "Sus%");  //will return true, for any value starting with "Sus"
like("Susie", "%Sus%"); //will return true, for any value containing "Sus"
like("Susie", "%Sus");  //will return false. This example is looking for a string ending in "Sus".
like("Susie", "Sus");   //will return false. This example is looking for a string matching only "Sus" exactly.

Deep Notes

Source

Posted here with the kind permission of Very Keynes. Originally posted February 2008 at http://forums-archive.secondlife.com/54/c9/243445/1.html .

Signature