Difference between revisions of "LlStringTrim/ja"

From Second Life Wiki
Jump to: navigation, search
(Create)
 
 
(4 intermediate revisions by 2 users not shown)
Line 8: Line 8:
 
|func_footnote
 
|func_footnote
 
|func_desc
 
|func_desc
|return_text='''src''' から、先頭および/あるいは末尾の空白 (スペース、タブ、ラインフィード) をトリミングした (取り除いた) 文字列
+
|return_text=先頭や末尾の空白文字 (スペース、タブ、改行) を取り除いた '''src''' 
 
|spec
 
|spec
 
|caveats
 
|caveats
Line 14: Line 14:
 
{{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}
 
{{{!}} class="sortable" {{Prettytable|style=margin-top:0;}}
 
{{!}}-{{Hl2}}
 
{{!}}-{{Hl2}}
! {{!}} Constant
+
! {{!}} 定数
! title="Value" {{!}}
+
! title="" {{!}}
! class="unsortable"{{!}} Description
+
! class="unsortable"{{!}} 説明
 
{{!}}-
 
{{!}}-
{{!}}{{LSL Const|STRING_TRIM_HEAD|integer|1|hex=0x1|c=先頭からスペースをトリミングする。}}
+
{{!}}{{LSL Const/ja|STRING_TRIM_HEAD|integer|1|hex=0x1|c=先頭から空白文字を取り除く。}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:comment}}
 
{{!}}{{#var:comment}}
 
{{!}}-
 
{{!}}-
{{!}}{{LSL Const|STRING_TRIM_TAIL|integer|2|hex=0x2|c=末尾からスペースをトリミングする。}}
+
{{!}}{{LSL Const/ja|STRING_TRIM_TAIL|integer|2|hex=0x2|c=末尾から空白文字を取り除く。}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:comment}}
 
{{!}}{{#var:comment}}
 
{{!}}-
 
{{!}}-
{{!}}{{LSL Const|STRING_TRIM|integer|3|hex=0x3|c=先頭と末尾からスペースをトリミングする。}}
+
{{!}}{{LSL Const/ja|STRING_TRIM|integer|3|hex=0x3|c=先頭と末尾から空白文字を取り除く。}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:value}}
 
{{!}}{{#var:comment}}
 
{{!}}{{#var:comment}}
 
{{!}}}
 
{{!}}}
 
|examples=
 
|examples=
チャットやノートカードで、ユーザから自由入力のメッセージを受け取る際、常にそれを以下のようにしてトリミングするのは良い考えです:
+
ユーザから非定型の入力データを -- チャットやノートカードで -- 受け入れるときは、常に全部トリムしてしまうとよいでしょう。
  
 
llStringTrim("ユーザの入力内容", STRING_TRIM);  
 
llStringTrim("ユーザの入力内容", STRING_TRIM);  
  
以下の例は、文字列の先頭と末尾からトリミングされたスペースの文字数を返します。(実用的ではありませんが、関数の動作例として。)
+
以下の例は、文字列の先頭と末尾にあるスペースの数を返します (特に便利というわけではありませんが、関数の使用方法がわかります)
<lsl>
+
<source lang="lsl2">
 
default
 
default
 
{
 
{
Line 49: Line 49:
 
     listen(integer chan, string name, key id, string msg)
 
     listen(integer chan, string name, key id, string msg)
 
     {
 
     {
         //先頭と末尾に単一/二重引用符があったら、取り除く。
+
         //単一もしくは二重引用符で囲まれているかチェックし、取り除く。
 
         if(~llSubStringIndex("'\"", llGetSubString(msg,0,0)))
 
         if(~llSubStringIndex("'\"", llGetSubString(msg,0,0)))
 
             if(llGetSubString(msg,-1,-1) == llGetSubString(msg,0,0))
 
             if(llGetSubString(msg,-1,-1) == llGetSubString(msg,0,0))
Line 57: Line 57:
 
         integer length = llStringLength(msg);
 
         integer length = llStringLength(msg);
 
          
 
          
         //トリミングする。(不必要な変数代入があるが、読みやすさに配慮したため。)
+
         //msg をトリムする。(変数に格納する必要はありませんが、読みやすさに配慮しました)
 
         string trim_left = llStringTrim(msg, STRING_TRIM_HEAD);
 
         string trim_left = llStringTrim(msg, STRING_TRIM_HEAD);
         string trim_right = llStringTrim(msg, STRING_TRIM_HEAD);
+
         string trim_right = llStringTrim(msg, STRING_TRIM_TAIL);
 
         string trim = llStringTrim(msg, STRING_TRIM);
 
         string trim = llStringTrim(msg, STRING_TRIM);
  
Line 69: Line 69:
 
     }
 
     }
 
}
 
}
</lsl>
+
</source>
 
|helpers
 
|helpers
 
|also_functions
 
|also_functions
Line 76: Line 76:
 
|also_articles
 
|also_articles
 
|history=
 
|history=
*Introduced in 1.13.4
+
* 1.13.4 で導入
 
|notes=
 
|notes=
先頭や末尾にスペースがあろうと、この関数によって文字列の実質的な内容は損なわれません。しかしこれは、文字列の中にある余計なスペース (例えば誤入力された連続スペースなど) には手を加えないという事でもあります。
+
先頭や末尾にある空白以外は、実際の文字列は何の影響も受けません。しかし逆に、そうでない空白が文字列の中に入っていても -- 例えば、誤入力された連続スペースの類は -- 修正されないということにもなります。
  
 
以下の例は、連続したスペースと、先頭/末尾のスペースを削除します。
 
以下の例は、連続したスペースと、先頭/末尾のスペースを削除します。
<lsl>llDumpList2String(llParseString2List(src, [" "], []), " "); //動作しますが、メモリを多く消費します。</lsl>
+
<source lang="lsl2">llDumpList2String(llParseString2List(src, [" "], []), " "); //動作しますが、メモリを多く消費します。</source>
 
|deprecated
 
|deprecated
 
|cat1=String
 
|cat1=String

Latest revision as of 14:38, 25 February 2016

要約

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