気ままな一言
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
Posted by れむ at 14:56
│Tips
コメントありがとう♪
レミ先生
初心者にはよくわからないんですが
この関数はどんなときに使うんですか?
初心者にはよくわからないんですが
この関数はどんなときに使うんですか?
Posted by そうだら at 2008年03月28日 17:35
そうですね~
初心者向きの内容ではないので
わかるようになってからまたみて下さい(笑)
初心者向きの内容ではないので
わかるようになってからまたみて下さい(笑)
Posted by れむ
at 2008年03月28日 18:38
