LlCSV2List/ja
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: list llCSV2List( string src );
この関数は、各要素がカンマで区切られた文字列を受け取り、list 変数へ変換します。
カンマ区切り形式の文字列 src を切り分けたリストを list で返します。
• string | src |
リストをカンマ区切り形式へ変換する場合は llList2CSV を使ってください。
この関数が扱うのは、厳密な意味での CSV 形式ではありません。
仕様
Vector 値と Rotation 値
"<" と ">" の間にある内容は全て、カンマの有無に関わらず、一個の値とみなされます
すなわち vector 値や rotation 値は、一個の string 値として扱われ、それ以上の型変換は行なわれません。
"<" には常に対応する ">" が必要というのは注意すべき点で、これが無いと残りの文字列を一続きのものとして解釈してしまいます。例えば、
• | llCSV2List("<>,>,a")
|
– | の戻り値は ["<>", ">", "a"]
|
(二番目の ">" が孤立しています) |
• | llCSV2List("<<>,>,a")
|
– | の戻り値は ["<<>,>", "a"]
|
(どの括弧もペアになっています) |
• | llCSV2List("<<<>,>,a")
|
– | の戻り値は ["<<<>,>,a"]
|
(三番目の "<" には対応する閉じ括弧がありません) |
Whitespace
llCSV2List は全要素から先頭と末尾のスペースを自動的に取り除きます
<lsl>list tmp = llCSV2List("first , second , third"); // ["first","second","third"] が返ります。 // ["first "," second "," third"] ではありません。</lsl>
警告
- "<" に対応する ">" が無い場合、たとえ途中に "<" がまたあったとしても、文字列の残りの部分は一つの値と見なされます。詳細はVector値とRotation値の項を参照してください。
- 戻り値の全ての要素は string 型です。
- 全ての要素について、先頭と末尾のスペースは削除されます。
- 空文字列を切り分けた場合、戻り値は空のリストでなく、空文字列が入ったリスト [""] になります。
サンプル
<lsl>default {
state_entry() { string csv = "first,second,third"; list my_list = llCSV2List(csv); llOwnerSay("CSV: " + csv); integer i; for (i=0; i<llGetListLength(my_list); ++i) { llOwnerSay("my_list[" + (string)i + "]: " + llList2String(my_list,i)); } }}</lsl>
注意点
カンマ以外の区切り文字を使う場合、例えばユーザの自由入力 (それ自体カンマを含んでいる) を扱うのでカンマが区切り記号として適切でないといった場合などは、代わりに llParseString2List を使うことでカンマ以外の区切り記号を指定できます。ただし llParseString2List は rotation 型や vector 型の処理に必要な、括弧対応を踏まえた切り分けは行なわず、各要素の前後にあるスペースの削除も行ないません。