LlStringTrim/ja

From Second Life Wiki
< LlStringTrim
Revision as of 14:38, 25 February 2016 by SakuraNoel Fayray (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.

要約

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

先頭や末尾の空白文字 (スペース、タブ、改行) を取り除いた src を string で返します。

• string src
• integer type STRING_TRIM* フラグ

定数 説明
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);
        
        //msg をトリムする。(変数に格納する必要はありませんが、読みやすさに配慮しました)
        string trim_left = llStringTrim(msg, STRING_TRIM_HEAD);
        string trim_right = llStringTrim(msg, STRING_TRIM_TAIL);
        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, [" "], []), " "); //動作しますが、メモリを多く消費します。

特記事項

経緯

  • 1.13.4 で導入

Search JIRA for related Issues

Signature

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