ソラマメ ブログ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 4人
オーナーへメッセージ
QRコード
QRCODE

気ままな一言

ご質問等、ページへのリンクはご自由に。気軽にコメントでもどうそ~
詳しいことは角川SIMのサポートセンターまでいらっしゃいませっ

世間知らずなので逆にいろいろ教えてください♪

2008年03月28日

LSL汎用関数 その1

文字列関連です。

//==============================================================================
//  文字列を置換します。
//  source      対象の文字列
//  search      置換される文字列
//  replace     置換する文字列
//  戻り値      置換されたを返します。
//==============================================================================
string str_replace(string source, string search, string replace)
{
    integer len = llStringLength(search);
    integer index = llSubStringIndex(source, search);
    while (index >= 0) {
        source = llDeleteSubString(source, index, -1) + replace
                + llDeleteSubString(source, 0, index + len - 1);
        index = llSubStringIndex(source, search);
    }
    return source;
}


【使用方法】
string str = str_replace("0123456789", "123", "zzz");      // str = "0zzz456789"
string str = str_replace("0123401234", "123", "zzz");      // str = "0zzz40zzz4"


//============================================================================== // 文字列を反復します。 // str 繰り返す文字列 // count 繰り返す回数 // 戻り値 繰り返した文字列を返します。 //============================================================================== string str_repeat(string str, integer count) { string s = ""; integer i; for (i = 0; i < count; i=-(~i)) { s += str; } return s; } // 件数が増えても高速 string str_repeat(string str, integer count) { string s1; string s2 = ""; integer i; while (count) { s1 = str; i = 0; while (count >> (i=-(~i))) { s1 += s1; } count -= (1 << (i - 1)); s2 += s1; } return s2; } 【使用方法】 string str = str_repeat(" ", "5"); // str = " " string str = str_repeat("12", "5"); // str = "1212121212"
//============================================================================== // 文字列の末尾を指定の長さまで他の文字列で埋めます。 // padに""(空文字)を指定した場合は" "(スペース)で埋められます。 // str 文字列 // length 埋めた後の長さ // pad 埋める文字列 // 戻り値 埋めた後の文字列を返します。 //============================================================================== string str_pad(string str, integer length, string pad) { if (pad == "") { pad = " "; // default space } while (llStringLength(str) < length) { str += pad; } return llGetSubString(str, 0, length - 1); } 【使用方法】 string str = str_pad("01234", "10", " "); // str = "01234 " string str = str_pad("0123456789", "5", " "); // str = "01234" string str = str_pad("01234", "10", "abc"); // str = "01234abcab"
//============================================================================== // 文字列の先頭を指定の長さまで他の文字列で埋めます。 // padに""(空文字)を指定した場合は" "(スペース)で埋められます。 // str 文字列 // length 埋めた後の長さ // pad 埋める文字列 // 戻り値 埋めた後の文字列を返します。 //============================================================================== string str_lpad(string str, integer length, string pad) { if (pad == "") { pad = " "; // default space } integer n; while ((n = llStringLength(str) - length) < 0) { str = pad + str; } return llGetSubString(str, n, n + length - 1); } 【使用方法】 string str = str_lpad("01234", "10", " "); // str = " 01234" string str = str_lpad("0123456789", "5", " "); // str = "56789" string str = str_lpad("01234", "10", "abc"); // str = "bcabc01234"
//============================================================================== // 文字列を逆順にします。 // str 逆順にする文字列 // 戻り値 逆順にした文字列を返します。 //============================================================================== string str_reverse(string str) { string s = ""; integer len = llStringLength(str); integer i; for (i = len - 1; i >= 0; i=~(-i)) { s += llGetSubString(str, i, i); } return s; } // メモリ節約版 string str_reverse(string str) { integer len = llStringLength(str); integer i; for (i = len - 2; i >= 0; i=~(-i)) { str = llDeleteSubString(str, i, i) + llGetSubString(str, i, i); } return str; } 【使用方法】 string str = str_reverse("01234"); // str = "43210"
//============================================================================== // 大文字小文字を区別しない文字列比較を行います。 // str1 文字列1 // str2 文字列2 // 戻り値 等しい場合はTRUEを返します。 //============================================================================== integer str_case_equal(string str1, string str2) { return llToLower(str1) == llToLower(str2); } 【使用方法】 integer result = str_case_equal("abc", "abc"); // result = TRUE integer result = str_case_equal("aBC", "AbC"); // result = TRUE


同じカテゴリー(Tips)の記事画像
LSLを便利に書こう
同じカテゴリー(Tips)の記事
 lslint へ関数を追加 (2009-03-24 02:08)
 LSL汎用関数 訂正 (2009-03-04 01:26)
 SLサーバーの環境変数 (2008-08-12 21:51)
 LSL汎用関数 その4 (2008-06-14 11:35)
 LSL汎用関数 その3 (2008-05-29 19:12)
 LSLを便利に書こう (2008-05-04 19:46)
Posted by れむ at 14:56 │Tips
コメントありがとう♪
レミ先生
初心者にはよくわからないんですが
この関数はどんなときに使うんですか?
Posted by そうだら at 2008年03月28日 17:35
そうですね~
初心者向きの内容ではないので
わかるようになってからまたみて下さい(笑)
Posted by れむれむ at 2008年03月28日 18:38