JScriptバッチ処理用ライブラリ 20130825公開

ライブラリ制作
スポンサーリンク

私のサイトで公開している
JScriptバッチ処理用ライブラリのバージョン「20130825」を公開しました。

主な内容は、JavaのString.formatを、JScriptでも使用できるようにするというものです。
JavaのString.formatは、大体はCのsprintfと似ているのですが、もっといろいろできます。
ただ、今回JScriptで使用できるようにしたString.formatは、Cのsprintfを似せて作りました。

コードを作成するに当たっては、
正規表現を使ってすっきり書くけど、分かりやすいコードを心がけて作りました。
String.formatの定義だけ抜き出せば、JavaScriptでも使用できるように作りました。
速度は、恐らく遅いと思いますが、最近のパソコンなら関係ないと思います。


ライブラリを使用した場合次のコードで

function main(args) {

	System.out.println("String.format のサンプル");
	
	var format = [
		"",
		" ",
		"+",
		"2",
		"10",
		".2",
		".10",
		"-16",
		" 16",
		"016",
		"#16",
		"#16.",
		"#-+16.",
		"#16.4"
	];
	
	System.out.println("動作例");
	for(var i = 0;i < format.length; i++) {
		var x = 10;
		// 整数10進数
		System.out.println(String.format("%%" + format[i] + "d [%" + format[i] + "d]", x));
		// 整数2進数
		System.out.println(String.format("%%" + format[i] + "b [%" + format[i] + "b]", x));
		System.out.println(String.format("%%" + format[i] + "B [%" + format[i] + "B]", x));
		// 整数8進数
		System.out.println(String.format("%%" + format[i] + "o [%" + format[i] + "o]", x));
		// 整数16進数
		System.out.println(String.format("%%" + format[i] + "x [%" + format[i] + "x]", x));
		System.out.println(String.format("%%" + format[i] + "X [%" + format[i] + "X]", x));
		// 小数形式浮動小数点数
		System.out.println(String.format("%%" + format[i] + "f [%" + format[i] + "f]", x));
		// 指数形式浮動小数点数
		System.out.println(String.format("%%" + format[i] + "e [%" + format[i] + "e]", x));
		System.out.println(String.format("%%" + format[i] + "E [%" + format[i] + "E]", x));
		// fかeで適した方
		System.out.println(String.format("%%" + format[i] + "g [%" + format[i] + "g]", x));
		System.out.println(String.format("%%" + format[i] + "G [%" + format[i] + "G]", x));
		// 文字
		System.out.println(String.format("%%" + format[i] + "c [%" + format[i] + "c]", "A".charCodeAt(0)));
		// 文字列
		System.out.println(String.format("%%" + format[i] + "s [%" + format[i] + "s]", "ABCDEFG"));
	}

	System.out.println("引数順指定");
	System.out.println(String.format("%%1$d %%2$d %%3$d [%1$d %2$d %3$d]" ,1 ,2 ,3 ));
	System.out.println(String.format("%%3$d %%2$d %%1$d [%3$d %2$d %1$d]" ,1 ,2 ,3 ));

	System.out.println("引数によるフィールド幅指定");
	for(var i = 1;i < 10; i++) {
		var x = 1;
		System.out.println(String.format("%%*d(" + i + ") [%*d]" ,i ,x ));
	}

	System.out.println("引数による精度指定(実数)");
	for(var i = 1;i < 10; i++) {
		var x = 1;
		System.out.println(String.format("%%.*f(" + i + ") [%.*f]" ,i ,x ));
	}

	System.out.println("引数による精度指定(文字列)");
	for(var i = 1;i < 10; i++) {
		var x = "ABCDEFGHIJKLMN";
		System.out.println(String.format("%%.*s(" + i + ") [%.*s]" ,i ,x ));
	}

	System.out.println("組合せ");
	for(var i = 1;i < 10; i++) {
		var x = 1;
		System.out.println(String.format("%%*.*f(" + i + ") [%*.*f]" ,i * 2 ,i ,x ));
	}

	System.out.println("動作例(マイナスの数字)");
	for(var i = 0;i < format.length; i++) {
		var x = -10;
		// 整数10進数
		System.out.println(String.format("%%" + format[i] + "d [%" + format[i] + "d]", x));
		System.out.println(String.format("%%" + format[i] + "u [%" + format[i] + "u]", x));
		// 整数2進数
		System.out.println(String.format("%%" + format[i] + "b [%" + format[i] + "b]", x));
		System.out.println(String.format("%%" + format[i] + "B [%" + format[i] + "B]", x));
		// 整数8進数
		System.out.println(String.format("%%" + format[i] + "o [%" + format[i] + "o]", x));
		// 整数16進数
		System.out.println(String.format("%%" + format[i] + "x [%" + format[i] + "x]", x));
		System.out.println(String.format("%%" + format[i] + "X [%" + format[i] + "X]", x));
		// 小数形式浮動小数点数
		System.out.println(String.format("%%" + format[i] + "f [%" + format[i] + "f]", x));
		// 指数形式浮動小数点数
		System.out.println(String.format("%%" + format[i] + "e [%" + format[i] + "e]", x));
		System.out.println(String.format("%%" + format[i] + "E [%" + format[i] + "E]", x));
		// fかeで適した方
		System.out.println(String.format("%%" + format[i] + "g [%" + format[i] + "g]", x));
		System.out.println(String.format("%%" + format[i] + "G [%" + format[i] + "G]", x));
	}

	System.stop();

}

結果はこうなります。

String.format のサンプル
動作例
%d [10]
%b [1010]
%B [1010]
%o [12]
%x [a]
%X [A]
%f [10.000000]
%e [1.000000e+001]
%E [1.000000E+001]
%g [10]
%G [10]
%c [A]
%s [ABCDEFG]
% d [ 10]
% b [ 1010]
% B [ 1010]
% o [ 12]
% x [ a]
% X [ A]
% f [ 10.000000]
% e [ 1.000000e+001]
% E [ 1.000000E+001]
% g [ 10]
% G [ 10]
% c [A]
% s [ABCDEFG]
%+d [+10]
%+b [+1010]
%+B [+1010]
%+o [+12]
%+x [+a]
%+X [+A]
%+f [+10.000000]
%+e [+1.000000e+001]
%+E [+1.000000E+001]
%+g [+10]
%+G [+10]
%+c [A]
%+s [ABCDEFG]
%2d [10]
%2b [1010]
%2B [1010]
%2o [12]
%2x [ a]
%2X [ A]
%2f [10.000000]
%2e [1.000000e+001]
%2E [1.000000E+001]
%2g [10]
%2G [10]
%2c [ A]
%2s [ABCDEFG]
%10d [		10]
%10b [	  1010]
%10B [	  1010]
%10o [		12]
%10x [		 a]
%10X [		 A]
%10f [ 10.000000]
%10e [1.000000e+001]
%10E [1.000000E+001]
%10g [		10]
%10G [		10]
%10c [		 A]
%10s [   ABCDEFG]
%.2d [10]
%.2b [1010]
%.2B [1010]
%.2o [12]
%.2x [0a]
%.2X [0A]
%.2f [10.00]
%.2e [1.00e+001]
%.2E [1.00E+001]
%.2g [10]
%.2G [10]
%.2c [A]
%.2s [AB]
%.10d [0000000010]
%.10b [0000001010]
%.10B [0000001010]
%.10o [0000000012]
%.10x [000000000a]
%.10X [000000000A]
%.10f [10.0000000000]
%.10e [1.0000000000e+001]
%.10E [1.0000000000E+001]
%.10g [10]
%.10G [10]
%.10c [A]
%.10s [ABCDEFG]
%-16d [10			  ]
%-16b [1010			]
%-16B [1010			]
%-16o [12			  ]
%-16x [a			   ]
%-16X [A			   ]
%-16f [10.000000	   ]
%-16e [1.000000e+001   ]
%-16E [1.000000E+001   ]
%-16g [10			  ]
%-16G [10			  ]
%-16c [A			   ]
%-16s [ABCDEFG		 ]
% 16d [			  10]
% 16b [			1010]
% 16B [			1010]
% 16o [			  12]
% 16x [			   a]
% 16X [			   A]
% 16f [	   10.000000]
% 16e [   1.000000e+001]
% 16E [   1.000000E+001]
% 16g [			  10]
% 16G [			  10]
% 16c [			   A]
% 16s [		 ABCDEFG]
%016d [0000000000000010]
%016b [0000000000001010]
%016B [0000000000001010]
%016o [0000000000000012]
%016x [000000000000000a]
%016X [000000000000000A]
%016f [000000010.000000]
%016e [0001.000000e+001]
%016E [0001.000000E+001]
%016g [0000000000000010]
%016G [0000000000000010]
%016c [			   A]
%016s [		 ABCDEFG]
%#16d [			  10]
%#16b [		  0b1010]
%#16B [		  0B1010]
%#16o [			 012]
%#16x [			 0xa]
%#16X [			 0XA]
%#16f [	   10.000000]
%#16e [   1.000000e+001]
%#16E [   1.000000E+001]
%#16g [		 10.0000]
%#16G [		 10.0000]
%#16c [			   A]
%#16s [		 ABCDEFG]
%#16.d [			  10]
%#16.b [		  0b1010]
%#16.B [		  0B1010]
%#16.o [			 012]
%#16.x [			 0xa]
%#16.X [			 0XA]
%#16.f [			 10.]
%#16.e [		 1.e+001]
%#16.E [		 1.E+001]
%#16.g [		 1.e+001]
%#16.G [		 1.E+001]
%#16.c [				]
%#16.s [				]
%#-+16.d [+10			 ]
%#-+16.b [+0b1010		 ]
%#-+16.B [+0B1010		 ]
%#-+16.o [+012			]
%#-+16.x [+0xa			]
%#-+16.X [+0XA			]
%#-+16.f [+10.			]
%#-+16.e [+1.e+001		]
%#-+16.E [+1.E+001		]
%#-+16.g [+1.e+001		]
%#-+16.G [+1.E+001		]
%#-+16.c [				]
%#-+16.s [				]
%#16.4d [			0010]
%#16.4b [		  0b1010]
%#16.4B [		  0B1010]
%#16.4o [		   00012]
%#16.4x [		  0x000a]
%#16.4X [		  0X000A]
%#16.4f [		 10.0000]
%#16.4e [	 1.0000e+001]
%#16.4E [	 1.0000E+001]
%#16.4g [		   10.00]
%#16.4G [		   10.00]
%#16.4c [			   A]
%#16.4s [			ABCD]
引数順指定
%1$d %2$d %3$d [1 2 3]
%3$d %2$d %1$d [3 2 1]
引数によるフィールド幅指定
%*d(1) [1]
%*d(2) [ 1]
%*d(3) [  1]
%*d(4) [   1]
%*d(5) [	1]
%*d(6) [	 1]
%*d(7) [	  1]
%*d(8) [	   1]
%*d(9) [		1]
引数による精度指定(実数)
%.*f(1) [1.0]
%.*f(2) [1.00]
%.*f(3) [1.000]
%.*f(4) [1.0000]
%.*f(5) [1.00000]
%.*f(6) [1.000000]
%.*f(7) [1.0000000]
%.*f(8) [1.00000000]
%.*f(9) [1.000000000]
引数による精度指定(文字列)
%.*s(1) [A]
%.*s(2) [AB]
%.*s(3) [ABC]
%.*s(4) [ABCD]
%.*s(5) [ABCDE]
%.*s(6) [ABCDEF]
%.*s(7) [ABCDEFG]
%.*s(8) [ABCDEFGH]
%.*s(9) [ABCDEFGHI]
組合せ
%*.*f(1) [1.0]
%*.*f(2) [1.00]
%*.*f(3) [ 1.000]
%*.*f(4) [  1.0000]
%*.*f(5) [   1.00000]
%*.*f(6) [	1.000000]
%*.*f(7) [	 1.0000000]
%*.*f(8) [	  1.00000000]
%*.*f(9) [	   1.000000000]
動作例(マイナスの数字)
%d [-10]
%u [4294967286]
%b [11111111111111111111111111110110]
%B [11111111111111111111111111110110]
%o [37777777766]
%x [fffffff6]
%X [FFFFFFF6]
%f [-10.000000]
%e [-1.000000e+001]
%E [-1.000000E+001]
%g [-10]
%G [-10]
% d [-10]
% u [ 4294967286]
% b [ 11111111111111111111111111110110]
% B [ 11111111111111111111111111110110]
% o [ 37777777766]
% x [ fffffff6]
% X [ FFFFFFF6]
% f [-10.000000]
% e [-1.000000e+001]
% E [-1.000000E+001]
% g [-10]
% G [-10]
%+d [-10]
%+u [+4294967286]
%+b [+11111111111111111111111111110110]
%+B [+11111111111111111111111111110110]
%+o [+37777777766]
%+x [+fffffff6]
%+X [+FFFFFFF6]
%+f [-10.000000]
%+e [-1.000000e+001]
%+E [-1.000000E+001]
%+g [-10]
%+G [-10]
%2d [-10]
%2u [4294967286]
%2b [11111111111111111111111111110110]
%2B [11111111111111111111111111110110]
%2o [37777777766]
%2x [fffffff6]
%2X [FFFFFFF6]
%2f [-10.000000]
%2e [-1.000000e+001]
%2E [-1.000000E+001]
%2g [-10]
%2G [-10]
%10d [	   -10]
%10u [4294967286]
%10b [11111111111111111111111111110110]
%10B [11111111111111111111111111110110]
%10o [37777777766]
%10x [  fffffff6]
%10X [  FFFFFFF6]
%10f [-10.000000]
%10e [-1.000000e+001]
%10E [-1.000000E+001]
%10g [	   -10]
%10G [	   -10]
%.2d [-10]
%.2u [4294967286]
%.2b [11111111111111111111111111110110]
%.2B [11111111111111111111111111110110]
%.2o [37777777766]
%.2x [fffffff6]
%.2X [FFFFFFF6]
%.2f [-10.00]
%.2e [-1.00e+001]
%.2E [-1.00E+001]
%.2g [-10]
%.2G [-10]
%.10d [-0000000010]
%.10u [4294967286]
%.10b [11111111111111111111111111110110]
%.10B [11111111111111111111111111110110]
%.10o [37777777766]
%.10x [00fffffff6]
%.10X [00FFFFFFF6]
%.10f [-10.0000000000]
%.10e [-1.0000000000e+001]
%.10E [-1.0000000000E+001]
%.10g [-10]
%.10G [-10]
%-16d [-10			 ]
%-16u [4294967286	  ]
%-16b [11111111111111111111111111110110]
%-16B [11111111111111111111111111110110]
%-16o [37777777766	 ]
%-16x [fffffff6		]
%-16X [FFFFFFF6		]
%-16f [-10.000000	  ]
%-16e [-1.000000e+001  ]
%-16E [-1.000000E+001  ]
%-16g [-10			 ]
%-16G [-10			 ]
% 16d [			 -10]
% 16u [	  4294967286]
% 16b [ 11111111111111111111111111110110]
% 16B [ 11111111111111111111111111110110]
% 16o [	 37777777766]
% 16x [		fffffff6]
% 16X [		FFFFFFF6]
% 16f [	  -10.000000]
% 16e [  -1.000000e+001]
% 16E [  -1.000000E+001]
% 16g [			 -10]
% 16G [			 -10]
%016d [-000000000000010]
%016u [0000004294967286]
%016b [11111111111111111111111111110110]
%016B [11111111111111111111111111110110]
%016o [0000037777777766]
%016x [00000000fffffff6]
%016X [00000000FFFFFFF6]
%016f [-00000010.000000]
%016e [-001.000000e+001]
%016E [-001.000000E+001]
%016g [-000000000000010]
%016G [-000000000000010]
%#16d [			 -10]
%#16u [	  4294967286]
%#16b [0b11111111111111111111111111110110]
%#16B [0B11111111111111111111111111110110]
%#16o [	037777777766]
%#16x [	  0xfffffff6]
%#16X [	  0XFFFFFFF6]
%#16f [	  -10.000000]
%#16e [  -1.000000e+001]
%#16E [  -1.000000E+001]
%#16g [		-10.0000]
%#16G [		-10.0000]
%#16.d [			 -10]
%#16.u [	  4294967286]
%#16.b [0b11111111111111111111111111110110]
%#16.B [0B11111111111111111111111111110110]
%#16.o [	037777777766]
%#16.x [	  0xfffffff6]
%#16.X [	  0XFFFFFFF6]
%#16.f [			-10.]
%#16.e [		-1.e+001]
%#16.E [		-1.E+001]
%#16.g [		-1.e+001]
%#16.G [		-1.E+001]
%#-+16.d [-10			 ]
%#-+16.u [+4294967286	 ]
%#-+16.b [+0b11111111111111111111111111110110]
%#-+16.B [+0B11111111111111111111111111110110]
%#-+16.o [+037777777766   ]
%#-+16.x [+0xfffffff6	 ]
%#-+16.X [+0XFFFFFFF6	 ]
%#-+16.f [-10.			]
%#-+16.e [-1.e+001		]
%#-+16.E [-1.E+001		]
%#-+16.g [-1.e+001		]
%#-+16.G [-1.E+001		]
%#16.4d [		   -0010]
%#16.4u [	  4294967286]
%#16.4b [0b11111111111111111111111111110110]
%#16.4B [0B11111111111111111111111111110110]
%#16.4o [	037777777766]
%#16.4x [	  0xfffffff6]
%#16.4X [	  0XFFFFFFF6]
%#16.4f [		-10.0000]
%#16.4e [	-1.0000e+001]
%#16.4E [	-1.0000E+001]
%#16.4g [		  -10.00]
%#16.4G [		  -10.00]

コメント

タイトルとURLをコピーしました