LlStringTrim/ja

From Second Life Wiki

メインページ > LlStringTrim > LlStringTrim/ja
Jump to: navigation, search

関数: string llStringTrim( string src, integer type );

src から、先頭および/あるいは末尾の空白 (スペース、タブ、ラインフィード) をトリミングした (取り除いた) 文字列のstring値を返します。

• string src
• integer type STRING_TRIM* フラグ
Constant Description
STRING_TRIM_HEAD 0x1 先頭からスペースをトリミングする。
STRING_TRIM_TAIL 0x2 末尾からスペースをトリミングする。
STRING_TRIM 0x3 先頭と末尾からスペースをトリミングする。

チャットやノートカードで、ユーザから自由入力のメッセージを受け取る際、常にそれを以下のようにしてトリミングするのは良い考えです:

llStringTrim("ユーザの入力内容", STRING_TRIM);

以下の例は、文字列の先頭と末尾からトリミングされたスペースの文字数を返します。(実用的ではありませんが、関数の動作例として。)

 
default
{
    state_entry()
    {
        llListen(4, "", llGetOwner(), "");
    }
    on_rez(integer a)
    {
        llResetScript();
    }
    listen(integer chan, string name, key id, string msg)
    {
        //先頭と末尾に単一/二重引用符があったら、取り除く。
        if(~llSubStringIndex("'\"", llGetSubString(msg,0,0)))
            if(llGetSubString(msg,-1,-1) == llGetSubString(msg,0,0))
                msg = llDeleteSubString(msg, -1, 0);
 
        //文字列長を調べる。
        integer length = llStringLength(msg);
 
        //トリミングする。(不必要な変数代入があるが、読みやすさに配慮したため。)
        string trim_left = llStringTrim(msg, STRING_TRIM_HEAD);
        string trim_right = llStringTrim(msg, STRING_TRIM_HEAD);
        string trim = llStringTrim(msg, STRING_TRIM);
 
        //結果を出力する。
        llOwnerSay("Initial length = " + (string)length +
                 "\nLeading Spaces = " + (string)(length - llStringLength(trim_left))+
                 "\nTrailing Spaces = " + (string)(length - llStringLength(trim_right))+
                 "\nTrimmed Message = \"" + trim + "\"");
    }
}
 

ノート

先頭や末尾にスペースがあろうと、この関数によって文字列の実質的な内容は損なわれません。しかしこれは、文字列の中にある余計なスペース (例えば誤入力された連続スペースなど) には手を加えないという事でもあります。

以下の例は、連続したスペースと、先頭/末尾のスペースを削除します。

llDumpList2String(llParseString2List(src, [" "], []), " "); //動作しますが、メモリを多く消費します。

ディープノート

経緯

  • Introduced in 1.13.4
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。
In other languages