MessageBox("このファイルはライブラリです。直接実行はできません。"); // Lib.StrInc(...) って書けば他のファイルからアクセスできます。 /* * StrInc : 文字列のインクリメント * * StrInc("abc123") = "abc124" * 文字列後半の数字部分のみインクリメントします * * StrInc("abc") = "abc1" * 数字部分がない場合、後ろに"1"を連結します。 */ function StrInc(str){ if(str == ""){ return "1"; } strleft = left(str, len(str) - 1); strlast = right(str, 1); if(strlast == "0"){ // 最後の文字が"0" return (strleft + "1"); // 1 にする }else if(strlast == "9"){ // 最後の文字が"9" return (StrInc(strleft) + "0"); // 0 にして、繰り上がり(再帰) }else if((strlast - 0) == 0){ // 数値変換して 0、つまりアルファベット return (str + "1"); // 後ろに 1 をつける }else{ // "2"〜"8" return (strleft + "" + ((strlast - 0) + 1)); // 数字に変換(-0)して 1 をたし、文字列(+"")として連結。 } } /* * StrDec : 文字列のデクリメント * * StrInc("abc123") = "abc122" * 文字列後半の数字部分のみデクリメントします。 * * StrInc("abc") = "abc" * 数字部分がない場合や"0"をデクリメントした場合、 * もとの文字列をそのまま返します。 */ function StrDec(str){ if(str == ""){ return ""; } strleft = left(str, len(str) - 1); strlast = right(str, 1); if(strlast == "0"){ // 最後の文字が"0" strleftdec = StrDec(strleft); // 繰り下がり(再帰) if(strleftdec == strleft){ // もしデクリメントできなければ return str; // 全体もデクリメント不能 }else{ // 成功したなら return (strleftdec + "9"); // 1の位は 9 } }else if(strlast == "1"){ // 最後の文字が"1" strlast2 = right(strleft, 1); // 次の文字を見て if(strlast2 == "0" || (strlast2 - 0) > 0){ return (strleft + "0"); // 数字なら 0 にする }else{ // アルファベットなら return strleft; // 最上位桁の 0 となるので削除 } }else if((strlast - 0) == 0){ // 数値変換して 0、つまりアルファベット return str; // デクリメント不能 }else{ // "1"〜"8" return (strleft + "" + (strlast - 1)); // 数値として 1 をひき、文字列(+"")として連結。 } }