Category:LSL String

From Second Life Wiki
Revision as of 10:14, 8 July 2007 by Kerutsen Sellery (talk | contribs) (Added a note about escape codes, and when they get translated (and when they don't))
Jump to navigation Jump to search

A string is text data. The length of a string is only limited by available script memory. String values are enclosed in double quotes when defined in LSL text. Any character may be used in a string though some will need to be escaped.

Strings can be concatenated using the + operator.

Escape codes
Substring Replaced with
\t four spaces
\n new line
\" double quote
\\ backslash

String examples:

"Hello Avatar!"
"Yes"
"No"
"It's 10 o'clock."
"I am 21 years old!"
"Help " + "me"
EOF
//The following two strings have the same value.
"I scream,\nyou scream,\nwe all scream,\nfor ice-cream!"
"I scream,
you scream,
we all scream,
for ice-cream!"

Note: escape codes (listed above) are translated when the script is compiled, and not while it's running. The result: only strings that are inside your script when it is compiled will get, say, \n turned into a "new line" character. Text you read in from a notecard, chat, http, etc, will not be checked for escape codes -- that same \n typed in a notecard doesn't automatically turn into a "new line" character in any case. You'll have to do that yourself, if you really really need it for some reason.


Variable: string name;

string name;

Declares a variable of type string named name, with the value ""

• variable name variable name

Variable: string name = value;

string name = value;

Declares a variable of type string named name, with the value value.

• variable name variable name
• expression value string expression or constant

Typecast: (string)value

(string)value

Converts value to a value of type string.

• expression value expression or constant

Examples

integer int = 48934;
string str = (string)int;
string str_2;
str_2 = str;

Useful Functions

//Use these functions instead of llStringTrim if you want to trim characters other then spaces.

string TrimRight(string src, string chrs)
{
    integer i = llStringLength(src);
    do;while(~llSubStringIndex(chrs, llGetSubString(src, i = ~ -i, i)) && i);
    return llDeleteSubString(src, -~i, 0xFFFF);
}

string TrimLeft(string src, string chrs)
{
    integer i = ~llStringLength(src);
    do;while(i && ~llSubStringIndex(chrs, llGetSubString(src, (i = -~i), i)));
    return llDeleteSubString(src, 0xFFFF0000, ~-i);
}

string TrimBoth(string src, string chrs)
{
    integer i = ~llStringLength(src);
    do;while(i && ~llSubStringIndex(chrs, llGetSubString(src, (i = -~i), i)));
    i = llStringLength(src = llDeleteSubString(src, 0xFFFF0000, (~-(i))));
    do;while(~llSubStringIndex(chrs, llGetSubString(src, (i = ~-i), i)) && i);
    return llDeleteSubString(src, (-~(i)), 0xFFFF);
}