Difference between revisions of "LlStringTrim"

From Second Life Wiki
Jump to: navigation, search
(Undo revision 1189389 by Rolig Loon (Talk))
(Noted that llList2Json also trims strings)
 
(One intermediate revision by one other user not shown)
Line 34: Line 34:
 
Whenever you are accepting unstructured input from a user -- whether via chat or via a notecard -- it is a good idea to always full trim it:
 
Whenever you are accepting unstructured input from a user -- whether via chat or via a notecard -- it is a good idea to always full trim it:
  
<lsl>llStringTrim("User input", STRING_TRIM);</lsl>
+
<source lang="lsl2">llStringTrim("User input", STRING_TRIM);</source>
  
  
 
This example returns the number of leading and trailing 'white space' characters on a string that were removed (not particularly useful but shows how to use the function).
 
This example returns the number of leading and trailing 'white space' characters on a string that were removed (not particularly useful but shows how to use the function).
<lsl>
+
<source lang="lsl2">
 
default
 
default
 
{
 
{
Line 68: Line 68:
 
     }
 
     }
 
}
 
}
</lsl>
+
</source>
 
|helpers
 
|helpers
 
|also_functions
 
|also_functions
Line 81: Line 81:
  
 
The following will remove all double spaces and leading and trailing spaces.
 
The following will remove all double spaces and leading and trailing spaces.
<lsl>llDumpList2String(llParseString2List(src, [" "], []), " "); //works but can use a large quantity of memory</lsl>
+
<source lang="lsl2">llDumpList2String(llParseString2List(src, [" "], []), " "); //works but can use a large quantity of memory</source>
  
 
This method strips spaces from the sentence and may use less memory
 
This method strips spaces from the sentence and may use less memory
<lsl>
+
<source lang="lsl2">
 
//Added By To-mos Codewarrior
 
//Added By To-mos Codewarrior
 
string str1 = "some words to remove the spaces from";
 
string str1 = "some words to remove the spaces from";
Line 91: Line 91:
 
     data=llDeleteSubString(str1,index,index);
 
     data=llDeleteSubString(str1,index,index);
 
}
 
}
</lsl>
+
</source>
 
The following will do the same:
 
The following will do the same:
<lsl>(string)llParseString2List(src, [" "], []); //works but can use a large quantity of memory</lsl>
+
<source lang="lsl2">(string)llParseString2List(src, [" "], []); //works but can use a large quantity of memory</source>
 +
 
 +
[[llList2Json]] also trims strings contained in the list. Thus, an easy way to trim an entire list of strings is:
 +
<source lang="lsl2">
 +
list l = ["  a  ", " b", "c ", " d "];
 +
list trimmedList = llJson2List(llList2Json(JSON_ARRAY, l));
 +
</source>
 +
 
  
 
|deprecated
 
|deprecated

Latest revision as of 18:11, 20 April 2017

Summary

Function: string llStringTrim( string src, integer type );

Returns a string that is src with leading and/or trailing white space (spaces, tabs, and line feeds) trimmed from it.

• string src
• integer type STRING_TRIM* flag(s)
Constant Description
STRING_TRIM_HEAD 0x1 Trims white space off the beginning.
STRING_TRIM_TAIL 0x2 Trims white space off the end.
STRING_TRIM 0x3 Trims white space off the beginning and end.

Examples

Whenever you are accepting unstructured input from a user -- whether via chat or via a notecard -- it is a good idea to always full trim it:

llStringTrim("User input", STRING_TRIM);


This example returns the number of leading and trailing 'white space' characters on a string that were removed (not particularly useful but shows how to use the function).

default
{
    state_entry()
    {
        llListen(4, "", llGetOwner(), "");
    }
 
    on_rez(integer start_param)
    {
        llResetScript();
    }
 
    listen(integer channel, string name, key id, string message)
    {       
        //track the length
        integer length = llStringLength(message);
 
        //trim message (not necessary to store these to variables but makes reading easier)
        string trim_left  = llStringTrim(message, STRING_TRIM_HEAD);
        string trim_right = llStringTrim(message, STRING_TRIM_TAIL);
        string trim_both  = llStringTrim(message, STRING_TRIM);
 
        //output the results
        llOwnerSay("Initial length  = " + (string)length +
                 "\nLeading Spaces  = " + (string)(length - llStringLength(trim_left))+
                 "\nTrailing Spaces = " + (string)(length - llStringLength(trim_right))+
                 "\nTrimmed Message = \"" + trim_both + "\"");
    }
}

Notes

Aside from white space at the beginning and / or end, the actual string will be unaffected. This means too, though, that extraneous spaces within the string -- for instance, a mistaken double-space type -- will not be corrected.

The following will remove all double spaces and leading and trailing spaces.

llDumpList2String(llParseString2List(src, [" "], []), " "); //works but can use a large quantity of memory

This method strips spaces from the sentence and may use less memory

//Added By To-mos Codewarrior
string str1 = "some words to remove the spaces from";
integer index;
while(~index=llSubStringIndex(str1," ")) {
    data=llDeleteSubString(str1,index,index);
}

The following will do the same:

(string)llParseString2List(src, [" "], []); //works but can use a large quantity of memory

llList2Json also trims strings contained in the list. Thus, an easy way to trim an entire list of strings is:

list l = ["  a  ", " b", "c ", " d "];
list trimmedList = llJson2List(llList2Json(JSON_ARRAY, l));

Deep Notes

History

  • Introduced in 1.13.4
Date of release 25-04-2007

Search JIRA for related Issues

Signature

function string llStringTrim( string src, integer type );