LlParseString2List/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: list llParseString2List( string src, list separators, list spacers );

src を区切ってリストにし、separators を破棄して、spacers を維持し、空となった要素を全て取り除いたものを list で返します。

• string src 元の文字列
• list separators 破棄される区切り文字
• list spacers 維持されるスペーサー

警告

  • 空の文字列は (separators や spacers が隣接したり、末尾にあったりした場合に作られる) は全て削除されます。
    • (例えばリストの並びを保持したい等) 空文字列の要素を保持したい場合は、代わりに llParseStringKeepNulls を使ってください。
  • 引数の separators と spacers はそれぞれ先頭 8 要素だけが有効です。それを超えた分は無視されます。(これが問題になる場合は、以下の 便利なスニペット の項を参照してください。)
  • separators と spacers の要素は全て string 型でなければいけません。それ以外のデータ型は無視されます。
  • separators は spacers よりも優先的に扱われます。マッチングは src の先頭から開始されます。src のマッチング位置において、separators の各要素、次いで spacers の各要素とマッチングが行なわれ、それから次のマッチング位置へ移動します。
  • separators と spacers で要素の重複があっても、動作に支障はありません。
  • 戻り値の要素は全て string 型です。他のデータ型として扱うならば llList2String で明示的に型キャストしてください。llList2* 関数による暗黙の型キャストをあてにしないでください。 (これは通常デフォルト値を返却するため)
  • 戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。
All Issues ~ Search JIRA for related Bugs

サンプル

default
{
    state_entry()
    {
        // 以下のように出力されます:
        // <A><crazy><fox><.><Saw><the><moon><.><.>
        string my_string = "A crazy fox.  Saw the moon..";
        list my_list = llParseString2List(my_string,[" "],["."]);
        llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
        
        // 以下のように出力されます:
        //  <A><crazy><fox><.><><><Saw><the><moon><.><><.><>
        my_list = llParseStringKeepNulls(my_string,[" "],["."]);
        llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
    }
}

便利なスニペット

8 個以上のspacers や separators を扱う例:

•  ParseString2List llParseString2List および llParseStringKeepNulls と全く同じ処理を行う関数
•  separateWords 追加の前提条件を守れば、 llParseString2List と全く同じ処理を行う関数。一見正しいように見えます。

注意点

何かを separator として指定すると、指定された separator が見つかった位置で文字列を区切り、separator を削除することになります。

一方、何かを spacer として指定すると、spacer が見つかった位置で文字列を区切りますが、spacer はそこに置き去りにされ、結果に含まれることになります。

string myString = "What Are You Looking At?";

llSay(0, (string)llParseString2List(myString, ["W", "A", "Y", "L", "A"], [] ));
//出力: hat re ou ooking t?
    
llSay(0, (string)llParseString2List(myString, [], ["W", "A", "Y", "L", "A"] ) );
//出力: What Are You Looking At?

separators の要素に " " を使うと、英文は単語に切り分けられます。

spacers に何も指定したくない場合は [] としてください。

空の文字列を separator または spacer として指定すると、何も起こりません。

関連項目

特記事項

Search JIRA for related Issues

Signature

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