Difference between revisions of "LlParseString2List/ja"

From Second Life Wiki
Jump to navigation Jump to search
(Initial translation)
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LSL_Function/ja
{{LSL_Function/ja
{{#vardefine:p_src_desc|切り分け対象の文字列。}}
{{#vardefine:p_src_desc|元の文字列}}
{{#vardefine:p_separators_desc|区切り文字列。切り分け後、戻り値には含まれない。}}
{{#vardefine:p_separators_desc|破棄される区切り文字}}
{{#vardefine:p_spacers_desc|区切り文字列。切り分け後、戻り値に要素として含まれる。}}
{{#vardefine:p_spacers_desc|維持されるスペーサー}}
|func_id=214|func_sleep=0.0|func_energy=10.0
|func_id=214|func_sleep=0.0|func_energy=10.0
|func=llParseString2List|return_type=list
|func=llParseString2List|return_type=list
|p1_type=string|p1_name=src
|p1_type=string|p1_name=src|p2_type=list|p2_name=separators|p3_type=list|p3_name=spacers
|p2_type=list|p2_name=separators
|func_footnote
|p3_type=list|p3_name=spacers
|func_footnote='''separators''' の要素は、戻り値のリストには入りません。<br />
'''spacers''' の要素は、戻り値のリストにも要素として入ります。<br />
区切り文字列が連続した場合、その間の空文字列分は、戻り値の要素になりません。
|func_desc
|func_desc
|return_text='''separators''' および '''spacers''' を区切り文字列として '''src''' を切り分けたリスト
|return_text='''src''' を区切ってリストにし、'''separators''' を破棄して、'''spacers''' を維持し、空となった要素を全て取り除いたもの
|spec
|spec
|caveats=
|caveats=
*戻り値のリストでは、空文字列の要素 (spacer separator が隣接したり、src の先頭・末尾にあった場合に作られ得る) は全て削除されます。
*空の文字列は (separators spacers が隣接したり、末尾にあったりした場合に作られる) は全て削除されます。
**(例えばリストの並びを保持したい等) 空文字列の要素を敢えて保持したい場合は、代わりに {{LSLG/ja|llParseStringKeepNulls}} を使ってください。
**(例えばリストの並びを保持したい等) 空文字列の要素を保持したい場合は、代わりに {{LSLG/ja|llParseStringKeepNulls}} を使ってください。
*引数の separators と spacers はそれぞれ先頭 8 要素だけが有効です。それを超えた分は無視されます。(これが問題になる場合は、以下の Useful Snippets の項を参照してください。)
*引数の separators と spacers はそれぞれ先頭 8 要素だけが有効です。それを超えた分は無視されます。(これが問題になる場合は、以下の 便利なスニペット の項を参照してください。)
*separators と spacers の要素は全て string 型でなければいけません。それ以外のデータ型は無視されます。
*separators と spacers の要素は全て string 型でなければいけません。それ以外のデータ型は無視されます。
*separators は spacers よりも優先的に扱われます。マッチングは src の先頭から開始されます。src のマッチング位置において、separators の各要素、次いで spacers の各要素とマッチングが行なわれ、それから次のマッチング位置へ移動します。
*separators は spacers よりも優先的に扱われます。マッチングは src の先頭から開始されます。src のマッチング位置において、separators の各要素、次いで spacers の各要素とマッチングが行なわれ、それから次のマッチング位置へ移動します。
*separators と spacers で要素の重複があっても、動作に支障はありません。
*separators と spacers で要素の重複があっても、動作に支障はありません。
*戻り値の要素は全て string 型です。他のデータ型として扱うならば {{LSLG/ja|llList2String}} で明示的に型キャストしてください。llList2* 関数による暗黙の型キャストをあてにしないでください。(vector 型、rotation 型では期待通りの変換結果が得られない。)
* 戻り値の要素は全て string 型です。他のデータ型として扱うならば {{LSLG/ja|llList2String}} で明示的に型キャストしてください。llList2* 関数による暗黙の型キャストをあてにしないでください。 (これは通常デフォルト値を返却するため)
*戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。
*戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。
|constants
|constants
|examples=<lsl>default
|examples=<source lang="lsl2">default
{
{
     state_entry()
     state_entry()
Line 39: Line 35:
         llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
         llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
     }
     }
}</lsl>
}</source>
|helpers=
|helpers=
'''spacers や separators で 8 個以上の要素を扱う例:'''
'''8 個以上の'''spacers や separators を扱う例:'''
{{{!}}
{{{!}}
{{LSL DefineRow||[[ParseString2List]]|{{LSLG/ja|llParseString2List}} および {{LSLG/ja|llParseStringKeepNulls}} と全く同じ処理を行なう関数}}
{{LSL DefineRow||[[ParseString2List]]|{{LSLG/ja|llParseString2List}} および {{LSLG/ja|llParseStringKeepNulls}} と全く同じ処理を行う関数}}
{{LSL DefineRow||[[Separate Words|separateWords]]|追加の前提条件を除けば {{LSLG/ja|llParseString2List}} と全く同じ処理を行なう関数。}}
{{LSL DefineRow||[[Separate Words|separateWords]]|追加の前提条件を守れば、 {{LSLG/ja|llParseString2List}} と全く同じ処理を行う関数。一見正しいように見えます。}}
{{!}}}
{{!}}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llParseStringKeepNulls}}}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llParseStringKeepNulls}}}}
Line 54: Line 50:
|also_articles={{LSL DefineRow||[[Separate Words]]}}
|also_articles={{LSL DefineRow||[[Separate Words]]}}
{{LSL DefineRow||[[LSL-Editor/Bugs]]}}
{{LSL DefineRow||[[LSL-Editor/Bugs]]}}
|notes=separator は、文字列をそこで区切るものであり、区切った結果には含まれません。
|notes=何かを separator として指定すると、指定された separator が見つかった位置で文字列を区切り、separator を削除することになります。


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


<lsl>string myString = "What Are You Looking At?";
<source lang="lsl2">string myString = "What Are You Looking At?";


llSay(0, (string)llParseString2List(myString, ["W", "A", "Y", "L", "A"], [] ));
llSay(0, (string)llParseString2List(myString, ["W", "A", "Y", "L", "A"], [] ));
Line 64: Line 60:
      
      
llSay(0, (string)llParseString2List(myString, [], ["W", "A", "Y", "L", "A"] ) );
llSay(0, (string)llParseString2List(myString, [], ["W", "A", "Y", "L", "A"] ) );
//出力: What Are You Looking At?</lsl>
//出力: What Are You Looking At?</source>


separators の要素に " " を使うと、英文は単語に切り分けられます。
separators の要素に " " を使うと、英文は単語に切り分けられます。
Line 70: Line 66:
spacers に何も指定したくない場合は <code>[]</code> としてください。
spacers に何も指定したくない場合は <code>[]</code> としてください。


separators や spacers の空文字列の要素は無視されます。
空の文字列を separator または spacer として指定すると、何も起こりません。
|permission
|permission
|negative_index
|negative_index

Latest revision as of 06:17, 25 February 2016

要約

関数: 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* 関数による暗黙の型キャストをあてにしないでください。 (これは通常デフォルト値を返却するため)
  • 戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。

サンプル

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の関連した項目が参考になるかもしれません。