LlStringTrim/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: 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);

以下の例は、文字列の先頭と末尾にあるスペースの数を返します (特に便利というわけではありませんが、関数の使用方法がわかります) 。 <lsl> 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 + "\"");
   }

}

</lsl>

注意点

先頭や末尾にある空白以外は、実際の文字列は何の影響も受けません。しかし逆に、そうでない空白が文字列の中に入っていても -- 例えば、誤入力された連続スペースの類は -- 修正されないということにもなります。

以下の例は、連続したスペースと、先頭/末尾のスペースを削除します。 <lsl>llDumpList2String(llParseString2List(src, [" "], []), " "); //動作しますが、メモリを多く消費します。</lsl>

特記事項

経緯

  • 1.13.4 で導入

Search JIRA for related Issues

Signature

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