LlStringLength/ja
< LlStringLength
Jump to navigation
Jump to search
Revision as of 08:18, 16 September 2012 by CharlieA Nightfire (talk | contribs)
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: integer llStringLength( string str );警告
- 末尾の文字のインデックス番号は文字列長と一致しません。
- 文字のインデックスは 0 から始まります (先頭の文字のインデックスが 0 になります) 。
サンプル
<lsl> // 前提: // オブジェクト名: LSLWiki // スクリプト名: _lslwiki
default {
state_entry() { string HowLongAmI = "123"; integer strlen = llStringLength(HowLongAmI); llOwnerSay( "'" + HowLongAmI + "' は " +(string) strlen + " 文字です。"); // オブジェクト LSLWiki のオーナーには以下のように表示されます。 // LSLWiki: '123' は 3 文字です。 }
} </lsl>
<lsl> integer getStringBytes(string msg){
string s = llEscapeURL(msg); string t = (string)llParseString2List(s,["%"],[]); return llStringLength(t) * 2 - llStringLength(s);
} </lsl>
- 複数バイト文字を含む文字列のバイト数を得る
- msg と s のバイト数を次のように書くと:
- mb(msgのバイト数) = nb(置き換わらないバイト数) + bb(置き換わる前のバイト数)
- sb(sのバイト数) = nb + ab(置き換わった後のバイト数)
- ここで、
- ab = bb * 3 (各1バイト例えば '#' は、置き換わって 3 バイトの "%23" に)
- なので、
- mb = sb - bb * 2
- s 中の置き換わった全部が "%xx"(x:0-9またはA-F) の形になっているので、bb = s の中の '%'の数
- '%' を数えるため、s から '%' を除いた文字列 t を作れば:
- bb = sb - tb(tのバイト数)
- (s を llParseString2List()で'%'を除きながらリストに分解して、型キャストでまた文字列に戻して t とします。)
- これで求める答は:
- mb = sb - (sb - tb) * 2 = tb * 2 - sb
- 参考ブログ:
関連項目
関数
• | llGetListLength |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。