llSubStringIndex

From Second Life Wiki
Revision as of 20:48, 15 October 2007 by Kamilion Schnook (talk | contribs) (*Attempting to match an empty string ("") will return 0 instead of -1.)
Jump to navigation Jump to search

Summary

Function: integer llSubStringIndex( string source, string pattern );
0.0 Forced Delay
10.0 Energy

Returns an integer that is the index of pattern in source.

• string source
• string pattern

If pattern is not found in source, -1 is returned.
The index of the first character in the string is 0

Caveats

  • Performs a literal match (case sensitive).
    • Wildcards and RegEx are not supported.
  • Attempting to match an empty string ("") will return 0 instead of -1.

Examples

Matching against last names:

default
{
    state_entry()
    {
        llSensorRepeat("", NULL_KEY, AGENT, PI, 96.0, 20);
    }
    
    sensor(integer NumDet)
    {
        integer i;
        
        //Loop through all the sensor data and match against " Linden", 
        //this causes it to match with any last name of Linden (since there can't be spaces before the firstname)
        //Alternatively you could match a firstname with "FirstName "
        for(i = 0; i < NumDet; ++i)
            if(~llSubStringIndex(llDetectedName(i), " Linden"))
                llInstantMessage(llDetectedKey(i), "Hello, I see you!");
    }
}

Useful Snippets

An easy way to see if a string exists in another string...

if(~llSubStringIndex(myString, str))
{//it exists
    //This works because ~(-1) == 0 and any non-zero integer is considered true.
    //It saves bytecode and is faster then doing != -1
    //(It's also significantly less readable (unless you include the comments)
    // and most developers I know will advice against these kind of practices. -OddesE Oh)
}

See Also

Functions

•  llListFindList Find a list in another list

Deep Notes

Signature

function integer llSubStringIndex( string source, string pattern );