Difference between revisions of "User talk:ANSI Soderstrom/Misc useful functions"
Jump to navigation
Jump to search
(→printf: new section) |
m (→printf) |
||
Line 13: | Line 13: | ||
list modifiers = ["%s"]; | list modifiers = ["%s"]; | ||
list split = llParseString2List(sentence, [], modifiers); | list split = llParseString2List(sentence, [], modifiers); | ||
integer | integer last = llGetListLength(split) - 1; | ||
integer i = 0; | integer i = 0; | ||
integer k = -1; | integer k = -1; | ||
do { | do { | ||
while(!~llListFindList(modifiers, llList2List(split, ++k, k))) { | while(!~llListFindList(modifiers, llList2List(split, ++k, k))) { | ||
if(k == | if(k == last) {//this is an error! | ||
return (string)split; | return (string)split; | ||
} | } |
Revision as of 12:13, 14 May 2013
printf
Your printf will have a problem if the text being inserted contains "%s". I'd recommend either splitting the input string into a list or copying the output into a new string so that it doesn't get the opportunity to chew on it's own tail. -- Strife (talk|contribs) 12:10, 14 May 2013 (PDT)
<lsl> // modify a string in ANSI-C style // returns a string with all replacements for "modifier".... based on the equivalent positions in the list-content string printf(string sentence, list insertation) {
integer j = llGetListLength(insertation); if(j) { list modifiers = ["%s"]; list split = llParseString2List(sentence, [], modifiers); integer last = llGetListLength(split) - 1; integer i = 0; integer k = -1; do { while(!~llListFindList(modifiers, llList2List(split, ++k, k))) { if(k == last) {//this is an error! return (string)split; } } //string splitter = llList2String(split, k); //if (splitter == "%s") split = llListReplaceList(split, llList2List(split, i, i), k, k); } while(j > ++i); return (string)split; } return "Error, the insertation list is empty!\n(sentence: " + sentence + ")";
} </lsl>