stristr

From Second Life Wiki
Revision as of 21:59, 30 May 2010 by Strife Onizuka (talk | contribs) (Streamlining, we test haystack so we can use negative indexes; the before_needle syntax seemed backwards: false is less than true, so false should describe what comes earlier in the string.)
Jump to navigation Jump to search

Summary

Function: string Stristr( string haystack, string needle, integer after_needle );

Returns part of haystack string from the first occurrence of needle to the end of haystack.
Returns a string containing the text from haystack that comes before or after needle.

• string haystack The input string
• string needle the search within
• integer after_needle If TRUE, Stristr returns the part of the haystack after the first occurrence of the needle, otherwise before first occurrence.

Specification

<lsl>//Function created by Ugleh Ulrik string stristr(string haystack, string needle, integer after_needle){

   if(haystack)
   {//we have a haystack, it's not ""
       //Now find us a needle!
       integer pos = llSubStringIndex(haystack, needle);
       if(~pos)
       {//We have found a needle!
           if(after_needle)//return what comes after needle
               return llGetSubString(haystack, pos + llStringLength(needle), -1);
           return llDeleteSubString(haystack, pos, -1);
       }
   }
   return "";

} </lsl>

Examples

This example uses its basic feature, to provide the content left, or right of the searched string. <lsl>default {

   touch_start(integer total_number)
   {
        string source = "Hello there, Ugleh is my name!";
        string mess = stristr(source,"Ugleh",TRUE); //True means after Needle
        llOwnerSay(mess);//outputs  "  is my name!"
        
        mess = stristr(source,"Ugleh",FALSE); //False means before Needle.
        llOwnerSay(mess);//outputs "Hello there, "
   }
}</lsl>

See Also

Functions

•  llSubStringIndex Find a string in another string
•  llParseString2List Split a string up into a list
•  llParseStringKeepNulls Like llParseString2List but it keeps empty strings
•  llListFindList Like llSubStringIndex but for lists