Difference between revisions of "LlParseString2List/ja"
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 | |||
|func_desc | |func_desc | ||
|return_text=''' | |return_text='''src''' を区切ってリストにし、'''separators''' を破棄して、'''spacers''' を維持し、空となった要素を全て取り除いたもの | ||
|spec | |spec | ||
|caveats= | |caveats= | ||
* | *空の文字列は (separators や spacers が隣接したり、末尾にあったりした場合に作られる) は全て削除されます。 | ||
**(例えばリストの並びを保持したい等) | **(例えばリストの並びを保持したい等) 空文字列の要素を保持したい場合は、代わりに {{LSLG/ja|llParseStringKeepNulls}} を使ってください。 | ||
*引数の separators と spacers はそれぞれ先頭 8 要素だけが有効です。それを超えた分は無視されます。(これが問題になる場合は、以下の | *引数の 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* 関数による暗黙の型キャストをあてにしないでください。( | * 戻り値の要素は全て string 型です。他のデータ型として扱うならば {{LSLG/ja|llList2String}} で明示的に型キャストしてください。llList2* 関数による暗黙の型キャストをあてにしないでください。 (これは通常デフォルト値を返却するため) | ||
*戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。 | *戻り値を直接処理するのでないならば、戻り値を必ず変数へ格納してください。 | ||
|constants | |constants | ||
|examples=< | |examples=<source lang="lsl2">default | ||
{ | { | ||
state_entry() | state_entry() | ||
Line 39: | Line 35: | ||
llOwnerSay("<" + llDumpList2String(my_list,"><") + ">"); | llOwnerSay("<" + llDumpList2String(my_list,"><") + ">"); | ||
} | } | ||
}</ | }</source> | ||
|helpers= | |helpers= | ||
'''spacers や separators | '''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]]| | {{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 はそこに置き去りにされ、結果に含まれることになります。 | |||
< | <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?</ | //出力: What Are You Looking At?</source> | ||
separators の要素に " " を使うと、英文は単語に切り分けられます。 | separators の要素に " " を使うと、英文は単語に切り分けられます。 | ||
Line 70: | Line 66: | ||
spacers に何も指定したくない場合は <code>[]</code> としてください。 | spacers に何も指定したくない場合は <code>[]</code> としてください。 | ||
空の文字列を separator または spacer として指定すると、何も起こりません。 | |||
|permission | |permission | ||
|negative_index | |negative_index |
Latest revision as of 07:17, 25 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
警告
- 空の文字列は (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 として指定すると、何も起こりません。
関連項目
関数
• | llParseStringKeepNulls | |||
• | llDumpList2String | |||
• | llCSV2List | |||
• | llList2CSV |
記事
• | Separate Words | |||
• | LSL-Editor/Bugs |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。