A string is a sequence of characters limited in length only by available memory. Strings are enclosed in quotation marks (“). LSL uses UTF-8 for its encoding standard for strings.


string foo = "bar"; // this defines a string named "foo", containing the text "bar"

Strings can be concatenated using the plus sign (+) operator.

The hack to increase max stored list size works for strings as well:

myString = (myString="") + myString + "new_item";


// This adds the text "anotherstring"
// and the result of (string)PI_BY_TWO to the end of an existing string.
mystring = yourstring + "anotherstring" + (string)PI_BY_TWO;

(In this example, the text “(string)PI_BY_TWO” converts the float constant PI_BY_TWO to a string. This process is called typecasting.)

Escape Characters
In LSL, strings can contain some backslash (\) escape characters:

Substring Replaced with
\t four spaces
\n new line
\” double quote
\\ backslash

These are just a subset of the backslash escape characters found in any other language. If a backslash is used in a string, and it is not paired up with one of the above characters and it will be treated as “\\”. These escape characters only work in compiled scripts. In other words, a listener cannot be used to find the “new line” escape sequence and then treat it as the compiler would. However, a predefined string containing “\n” can be substituted for an input escape character sequence.

These functions are only a few of the many that use strings, but they’re the ones that manipulate strings.

Function Name Purpose
llDeleteSubString Removes a slice of a string
llDumpList2String Turns a list into a string
Turns a string into a list
llGetSubString Extracts a part of a string
llInsertString Inserts a string into a string
llToLower Converts a string to lowercase
llToUpper Converts a string to UPPERCASE
llStringLength Gets the length of a string
llStringTrim Trims leading and/or trailing spaces from a string
llSubStringIndex Finds the position of a string in another string
llEscapeURL Returns the string that is the URL-escaped version of url (replacing spaces with %20, etc)
llUnescapeURL Returns the string that is the URL unescaped version of url, replacing “%20” with spaces, etc.

LSL doesn’t appear to have any direct way to compare two strings for alphabetical order; here’s a hack.

integer CompareStrings(string a,string b) {
    //returns -1 if they are in alphabetical order
    //1 if in reverse alphabetical order
    //0 if equal
    if(a==b){return 0;}
    if(a==llList2String(llListSort([a,b],1,TRUE),0)) {return -1;} else {return 1;}