LlStringLength/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: integer llStringLength( string str );

str にある文字の数 (NULL文字をカウントしない) を integer で返します。

• 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
  • 参考ブログ:
http://snumaw.blogspot.jp/2009/01/lsl-lldialog.html
http://jinko.slmame.com/e602732.html

関連項目

関数

•  llGetListLength

特記事項

Search Canny for related Issues

Signature

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