Skip to content
lsl.devlsl.devLSL Dev

llCSV2List

function
Function syntax
list llCSV2List(
  1. string src// String of comma-separated values to parse.
);
Returns
list
Energy
10

This function takes a string of values separated by commas, and turns it into a list.

To convert a list into a comma-separated string use llList2CSV.

Do not confuse this function with the CSV format, it is not the CSV format.

Returns a list made by parsing src, a string of comma separated values.

How to use
list result = llCSV2List("");

Anything between ”<” and ”>” is considered a single value regardless of the existence of a comma between.

This ensures that vectors and rotations get treated as a single value, with no additional cleanup needed afterward.

Note, though, that for every ”<” there needs to be a corresponding ”>” or it will consume the rest of the string. For example,

  • llCSV2List("<>,>,a") — returns ["<>", ">", "a"] — (Second ”>” is isolated)
  • llCSV2List("<<>,>,a") — returns ["<<>,>", "a"] — (Regularly paired)
  • llCSV2List("<<<>,>,a") — returns ["<<<>,>,a"] — (Third ”<” lost its opposite one)

The function makes no assumptions about what the list entry types should be, all elements in the resulting list will be strings. It is important to know that the llList2* functions implicit typecasts do not work the same as explicit typecast. The following table gives code examples for each type that will yield the best results.

TargetCodeDescription
integer(integer)llList2String(mlist, mint)llList2Integer does not support the hex format
float(float)llList2String(mlist, mint)llList2Float does not support the scientific or hexadecimal notations
stringllList2String(mlist, mint)Always Safe
keyllList2Key(mlist, mint)Always Safe
vector(vector)llList2String(mlist, mint)llList2Vector will return a zero vector
rotation(rotation)llList2String(mlist, mint)llList2Rot will return a zero rotation

llCSV2List consumes the first leading space from all values :

list tmp = llCSV2List("first , second , third");
//returns ["first ","second ","third"]
//not ["first "," second "," third"]
  • If a ”<” does not have a matching ”>”, the remainder of the string will be a single value, even if the ”<” is in the middle of the value, see Vectors & Rotations for further details.
  • All items in the returned list are strings.
  • If an empty string is parsed, the result will a list containing an empty string: [""] (not an empty list).
  • When used with lists that are generated based off assets in inventory, llCSV2List should not be used, as inventory assets can contain commas as part of their names.
Example 1
default
{
state_entry()
{
string csv = "first,second,third";
list my_list = llCSV2List(csv);
llOwnerSay("CSV: " + csv);
integer i;
integer num_list=llGetListLength(my_list);
for (i=0; i<num_list; ++i)
{
llOwnerSay("my_list[" + (string)i + "]: " + llList2String(my_list,i));
}
}
}

To use separators other than commas (especially if you can’t predict when a user might have sneaked a comma into data they supply the script), use llParseString2List instead, which allows you to specify separators other than commas. llParseString2List unfortunately does not support the special parsing required for handling rotations and vectors, nor does it consume leading and trailing whitespace.

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.

From the Second Life Wiki

Community documentation adapted from LlCSV2List, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.