LlStringLength/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: integer llStringLength( string str );

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

• string str

警告

  • 末尾の文字のインデックス番号は文字列長と一致しません。
    • 文字のインデックスは 0 から始まります (先頭の文字のインデックスが 0 になります) 。
All Issues ~ Search JIRA for related Bugs

サンプル

// 前提: 
//    オブジェクト名: 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 JIRA for related Issues

Signature

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