Difference between revisions of "LlDeleteSubString/ja"

From Second Life Wiki
Jump to navigation Jump to search
(Create)
 
(Add footnotes about Japanese character issue)
Line 8: Line 8:
|p2_type=integer|p2_name=start
|p2_type=integer|p2_name=start
|p3_type=integer|p3_name=end
|p3_type=integer|p3_name=end
|func_footnote='''start''' および '''end''' の位置にある文字も削除されます。
|func_footnote='''start''' および '''end''' の位置にある文字も削除されます。<br/>
先頭文字は {{HoverText|0|zero}} 文字目です。<br/>
全角文字も 1 文字として数えます。
|func_desc
|func_desc
|return_text='''src''' のうち '''start''' から '''end''' までの範囲を取り除いた文字列
|return_text='''src''' のうち '''start''' 文字目から '''end''' 文字目までの範囲を取り除いた文字列
|spec
|spec
|caveats
|caveats
Line 54: Line 56:
|also_articles={{LSL DefineRow||[[Library_Combined_Library#str_replace|CombinedLibrary: str_replace]]}}
|also_articles={{LSL DefineRow||[[Library_Combined_Library#str_replace|CombinedLibrary: str_replace]]}}
|notes=
|notes=
インデックス番号はゼロから開始されます。従って start, end ともに 0 を指定した場合、最初の一文字だけ削除されます。負のインデックス番号は、末尾から先頭に向かって数えてゆきます。従って -1 は末尾の一文字を指すのに便利です。インデックス番号は正/負を取り混ぜて使えます。従って例えば位置指定の start, end にそれぞれ 0, -1 を指定した場合、文字列全体が削除されます。
インデックスはゼロから開始されます。従って start, end ともに 0 を指定した場合、最初の一文字だけ削除されます。負のインデックスは、末尾から先頭に向かって数えてゆきます。従って -1 は末尾の一文字を指すのに便利です。インデックスは正/負を取り混ぜて使えます。従って例えば位置指定の start, end にそれぞれ 0, -1 を指定した場合、文字列全体が削除されます。


文字列の長さを確かめたい場合は {{LSLG/ja|llStringLength}} を使ってください。
文字列の長さを確かめたい場合は {{LSLG/ja|llStringLength}} を使ってください。

Revision as of 06:54, 17 April 2009

要約

関数: string llDeleteSubString( string src, integer start, integer end );

src のうち start 文字目から end 文字目までの範囲を取り除いた文字列を string で返します。

• string src
• integer start 開始インデックス
• integer end 終了インデックス

startend には 負のインデックス を使用できます。 start および end の位置にある文字も削除されます。
先頭文字は 0 文字目です。
全角文字も 1 文字として数えます。

仕様

インデックス
先頭 0 -length
末尾 length - 1 -1

インデックス

  • 正のインデックスは先頭から数えます。先頭の要素は 0、末尾の要素は (length - 1) のインデックスを持ちます。
  • 負のインデックスは末尾から数えます。先頭の要素は -length、末尾の要素は -1 のインデックスを持ちます。

警告

  • start あるいは end が正常なインデックス範囲を外れていても、スクリプトはエラー表示を出さずに処理を続けます。
All Issues ~ Search JIRA for related Bugs

サンプル

<lsl> default {

   state_entry()
   {
       string ex = "abcdefghi";
       llDeleteSubString(ex, 4, 7); //この方法は間違い!
   }

}</lsl> <lsl> default {

   state_entry()
   {
       string ex = "abcdefghi";
       ex = llDeleteSubString(ex, 4, 7); //正しい方法
       llSay(0, ex); //"abcdi" と表示される。
   }

} </lsl> <lsl> //-- special case default {

   state_entry()
   {
       string ex = "abcdefghi";
       llSay( 0, llDeleteSubString(ex, 4, 7) ); //"abcdi" と表示される。
       //-- 出力だけして 'ex' の内容を変えたくない場合はこの方法も良いでしょう。
   }

}

</lsl>

注意点

範囲とインデックス

インデックス範囲の説明を容易にするため、まず全てのインデックスを正 (プラス) に変換してください。負のインデックスは先頭でなく末尾から数えたもので、負のインデックスは全て対応する正のインデックスを (範囲に収まる限りは) 持ちます。末尾 (最後のインデックス) を過ぎた正のインデックス、先頭 (最初のインデックス) より前の負のインデックスは有効で、その結果は予測可能かつ信頼できます。すなわち、その要素はあたかも存在するかのように扱われますが、それは出力されるまでの間に限ります。

  • start <= end の場合、範囲は start から end となります。 [start, end]
  • start > end の場合、範囲は 0 から end、および start から -1 となります。 [0, end] + [start, -1]
    • end が先頭より前の負のインデックスの場合、範囲は [start, -1] となります。
    • end が末尾より後の正のインデックスの場合、範囲は [0, end] となります。
    • startend がいずれも有効な範囲から外れていた場合、関数は処理すべき範囲を持たないことになります。(事実上、関数の呼び出しは無駄になります。)

詳細は負のインデックスを参照してください。 インデックスはゼロから開始されます。従って start, end ともに 0 を指定した場合、最初の一文字だけ削除されます。負のインデックスは、末尾から先頭に向かって数えてゆきます。従って -1 は末尾の一文字を指すのに便利です。インデックスは正/負を取り混ぜて使えます。従って例えば位置指定の start, end にそれぞれ 0, -1 を指定した場合、文字列全体が削除されます。

文字列の長さを確かめたい場合は llStringLength を使ってください。

文字列から特定のキーワードだけ削除したいという場合、llSubStringIndex を使うのがオーソドックスですが、Strife Onizuka が作成したライブラリ str_replace で簡便に済ますこともできます。

特記事項

Search JIRA for related Issues

Signature

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