Difference between revisions of "LlStringLength/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(One intermediate revision by one other user not shown)
Line 11: Line 11:
|constants
|constants
|examples=
|examples=
<lsl>
<source lang="lsl2">
// 前提:  
// 前提:  
//    オブジェクト名: LSLWiki
//    オブジェクト名: LSLWiki
Line 27: Line 27:
     }
     }
}
}
</lsl>
</source>
----
<source lang="lsl2">
integer getStringBytes(string msg){
    string s = llEscapeURL(msg);
    string t = (string)llParseString2List(s,["%"],[]);
    return llStringLength(t) * 2 - llStringLength(s);
}
</source>
*複数バイト文字を含む文字列のバイト数を得る
: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
 
|helpers
|helpers
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetListLength}}|}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetListLength}}|}}

Latest revision as of 14:37, 25 February 2016

要約

関数: 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の関連した項目が参考になるかもしれません。