LlStringTrim/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: string llStringTrim( string src, integer type );
定数 | 説明 | |
---|---|---|
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, [" "], []), " "); //動作しますが、メモリを多く消費します。
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。