llStringTrim
function
Function syntax
string llStringTrim(string src,// String to trim.integer type// Trim type flag (STRING_TRIM_HEAD,STRING_TRIM_TAIL, orSTRING_TRIM). Values: StringTrimType
);- Returns
string- Energy
- 10
Returns a copy of the string src with leading, trailing, or both types of whitespace (including spaces, tabs, and line feeds) eliminated, according to the specified trim type.
Returns a string that is src with leading and/or trailing white space (spaces, tabs, and line feeds) trimmed from it.
string result = llStringTrim("", 0);Specification
Section titled “Specification”| 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
Section titled “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).
16 collapsed lines
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 results6 collapsed lines
llOwnerSay("Initial length = " + (string)length + "\nLeading Spaces = " + (string)(length - llStringLength(trim_left))+ "\nTrailing Spaces = " + (string)(length - llStringLength(trim_right))+ "\nTrimmed Message = \"" + trim_both + "\""); }}- The exact set of characters stripped are 0x09 (tab), line feed (0x0a, “\n”), vertical tab (0x0b), form feed (0x0c), carriage return (0x0d) and space (0x20, ” ”).
- Only line feed and space function as true whitespace within SL, the others will produce some manner of a printable character.
- The “\t” escape code doesn’t actually represent the tab character, but several spaces instead.
- Other whitespace characters defined in Unicode, such as non-breaking space (0xa0) or specific-width spaces in the 0x2000 range are not stripped.
- 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 doubled (or further multiplied), leading and trailing spaces with iterated
llReplaceSubString:
while(llStringLength(s) != llStringLength(s = llReplaceSubString(s, " ", " ", 0)));s = llStringTrim(s, STRING_TRIM);llReplaceSubStringis also the easiest way to remove all spaces from a string:
llReplaceSubString("some words to remove the spaces from", " ", "", 0);llList2Jsonalso 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));- Some old, less efficient methods, no longer recommended for use:
:* Intra-string space trimming:
::
llDumpList2String(llParseString2List(src, [" "], []), " "); //works but can use a large quantity of memory:* An method to strip spaces from the sentence:
::
//Added By To-mos Codewarriorstring str1 = "some words to remove the spaces from";integer index;while(~index=llSubStringIndex(str1," ")) { data=llDeleteSubString(str1,index,index);}:* Variant of above:
::
(string)llParseString2List(src, [" "], []); //works but can use a large quantity of memoryHistory
Section titled “History”- Introduced in 1.13.4
Date of release 25-04-2007
Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.