Difference between revisions of "LlStringLength/ja"
Jump to navigation
Jump to search
Line 11: | Line 11: | ||
|constants | |constants | ||
|examples= | |examples= | ||
< | <source lang="lsl2"> | ||
// 前提: | // 前提: | ||
// オブジェクト名: LSLWiki | // オブジェクト名: LSLWiki | ||
Line 27: | Line 27: | ||
} | } | ||
} | } | ||
</ | </source> | ||
---- | ---- | ||
< | <source lang="lsl2"> | ||
integer getStringBytes(string msg){ | integer getStringBytes(string msg){ | ||
string s = llEscapeURL(msg); | string s = llEscapeURL(msg); | ||
Line 35: | Line 35: | ||
return llStringLength(t) * 2 - llStringLength(s); | return llStringLength(t) * 2 - llStringLength(s); | ||
} | } | ||
</ | </source> | ||
*複数バイト文字を含む文字列のバイト数を得る | *複数バイト文字を含む文字列のバイト数を得る | ||
:msg と s のバイト数を次のように書くと: | :msg と s のバイト数を次のように書くと: |
Latest revision as of 13:37, 25 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: integer llStringLength( string str );警告
- 末尾の文字のインデックス番号は文字列長と一致しません。
- 文字のインデックスは 0 から始まります (先頭の文字のインデックスが 0 になります) 。
サンプル
// 前提:
// オブジェクト名: LSLWiki
// スクリプト名: _lslwiki
default
{
state_entry()
{
string HowLongAmI = "123";
integer strlen = llStringLength(HowLongAmI);
llOwnerSay( "'" + HowLongAmI + "' は " +(string) strlen + " 文字です。");
// オブジェクト LSLWiki のオーナーには以下のように表示されます。
// LSLWiki: '123' は 3 文字です。
}
}
integer getStringBytes(string msg){
string s = llEscapeURL(msg);
string t = (string)llParseString2List(s,["%"],[]);
return llStringLength(t) * 2 - llStringLength(s);
}
- 複数バイト文字を含む文字列のバイト数を得る
- 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の関連した項目が参考になるかもしれません。