LlCSV2List/ja

From Second Life Wiki
Jump to: navigation, search

要約

関数: 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"] (三番目の "<" には対応する閉じ括弧がありません)

この関数はリストの要素の型が何であるかについて推測を行わず、できあがったリストの要素は全て string となります。llList2 系関数の暗黙の型変換は明示的な型変換と同じようには動作しないことにご注意ください。以下の表は、それぞれの型が最適な型変換を行うことのできるコード例を示しています。

対象 コード 説明
integer (integer)llList2String(mlist, mint) llList2Integer は HEX フォーマットをサポートしない
float (float)llList2String(mlist, mint) llList2Float は指数表記や 16 進表記をサポートしない
string llList2String(mlist, mint) 常に安全
key llList2Key(mlist, mint) 常に安全
vector (vector)llList2String(mlist, mint) llList2Vector はゼロベクトルを返す
rotation (rotation)llList2String(mlist, mint) llList2Rot はゼロ回転を返す

Whitespace

llCSV2List は全要素から先頭のスペースのみ自動的に取り除きます

list tmp = llCSV2List("first , second , third");
// ["first ","second ","third"] が返ります。
// ["first "," second "," third"] ではありません。

警告

  • "<" に対応する ">" が無い場合、たとえ途中に "<" がまたあったとしても、文字列の残りの部分は一つの値と見なされます。詳細はVector値とRotation値の項を参照してください。
  • 戻り値の全ての要素は string 型です。
  • 空文字列を切り分けた場合、戻り値は空のリストでなく、空文字列が入ったリスト [""] になります。
All Issues ~ Search JIRA for related Bugs

サンプル

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));
        }
    }
}

注意点

カンマ以外の区切り文字を使う場合、例えばユーザの自由入力 (それ自体カンマを含んでいる) を扱うのでカンマが区切り記号として適切でないといった場合などは、代わりに llParseString2List を使うことでカンマ以外の区切り記号を指定できます。ただし llParseString2List は rotation 型や vector 型の処理に必要な、括弧対応を踏まえた切り分けは行なわず、各要素の前後にあるスペースの削除も行ないません。

関連項目

関数

•  llList2CSV
•  llDumpList2String
•  llParseString2List
•  llParseStringKeepNulls

記事

•  Typecast

特記事項

Search JIRA for related Issues

Signature

function list llCSV2List( string src );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。