Open System Solutions

●1 テンプレートリプレースとは?

テンプレートリプレースは、簡単に言うとテキストファイルの一部分をプログラムで書き換えるための仕組みです。
Javaでこの機能を実装しようとした場合、「JDKのMessageFormat」や「JakartaプロジェクトのVelocity」などのが存在します。
では、なぜわざわざテンプレートリプレースを作ったのかというと、「JDKのMessageFormat」には、置換対象を10個までしか
指定できないという問題があり、「JakartaプロジェクトのVelocity」を利用するのは結構めんどくさい事と、オープンソースを
気軽に利用できないプロジェクトでもテンプレートエンジンを活用したいケースがあったからです。

●2 クラス概要

TemplateReplaceクラスは、文字列テンプレート中の左大括弧と右大括弧で括られた文字列を置換インデックスとして、
置換用に設定した内容に置換します。
ソースコードは、200ステップ程度なので必要に応じて改良して使ってください。

●3 TemplateReplaceの使い方

@.置換情報配列を利用
置換情報配列を利用すると大量の置換情報をセットするのが容易ですが、置換情報はシーケンシャルにしか設定できません。
(初期設定の状態では、置換対象の置換情報が設定されていない置換インデックスの内容は置換しないようにしています。)
  サンプル
	String str = "aaa {0} bbb {1} ccc {2} ddd {3}";
	String [] args = {"000", "111"};

	TemplateReplace templateReplace = new TemplateReplace(str);
	System.out.println("str:" + templateReplace.replace(args));
			
  処理結果
	str:aaa 000 bbb 111 ccc {2} ddd {3}
			

A.置換情報配列を利用(置換対象がない場合は空文字に変換)
置換情報配列を利用すると大量の置換情報をセットするのが容易ですが、置換情報はシーケンシャルにしか設定できません。
(setIgnoreNull()メソッドで、置換対象がない場合に空文字に置換されるように設定できます。)
  サンプル
	String str = "aaa {0} bbb {1} ccc {2} ddd {3}";
	String [] args = {"000", "111"};

	TemplateReplace templateReplace = new TemplateReplace(str);
	templateReplace.setIgnoreNull(true);
	System.out.println("str:" + templateReplace.replace(args));
			
  処理結果
	str:aaa 000 bbb 111 ccc  ddd 
			

B.置換情報を個別設定(置換インデックスに数値を利用)
置換情報の設定に配列を使わずに、個別に設定していくと全ての置換対象を設定する必要がなくなります。
  サンプル
	String str = "aaa {0} bbb {1} ccc {2} ddd {3}";

	TemplateReplace templateReplace = new TemplateReplace(str);
	templateReplace.putArgs(1,"111");
	templateReplace.putArgs(3,"333");
	System.out.println("str:" + templateReplace.replace());
			
  処理結果
	str:aaa {0} bbb 111 ccc {2} ddd 333
			

C.置換情報を個別設定(置換インデックスに文字列を利用)
置換インデックスに文字列を利用すると、各々の置換対象の意味付けが出来るのでテンプレートの可読性が高くなります。
  サンプル
	String str = "aaa {index0} bbb {index1} ccc {index2} ddd {index3}";

	TemplateReplace templateReplace = new TemplateReplace(str);
	templateReplace.putArgs("index1","111");
	templateReplace.putArgs("index3","333");
	System.out.println("str:" + templateReplace.replace());
			
  処理結果
	str:aaa {index0} bbb 111 ccc {index2} ddd 333
			

D.置換情報の変更
置換情報を変更したい場合は、clearArgs()メソッドで置換情報を初期化できます。
  サンプル
	String str = "aaa {index0} bbb {index1} ccc {index2} ddd {index3}";

	TemplateReplace templateReplace = new TemplateReplace(str);

	templateReplace.putArgs("index0","000");
	templateReplace.putArgs("index1","111");
	System.out.println("str:" + templateReplace.replace());

	// 置換情報の初期化
	templateReplace.clearArgs();
	
	templateReplace.putArgs("index2","222");
	templateReplace.putArgs("index3","333");
	System.out.println("str:" + templateReplace.replace());
			
  処理結果
	str:aaa 000 bbb 111 ccc {index2} ddd {index3}
	str:aaa {index0} bbb {index1} ccc 222 ddd 333
			


著作権について
掲載されたプログラムコード、サンプルデータ、その他の情報は、ご自由にご利用ください。あなたのプログラムにコピーして利用したり、改良して公開したりすることは大いに歓迎いたします。
掲載されたプログラムコード、サンプルデータ、その他の情報の著作権は、作成者にあります。著作物をパブリックドメインに置いて著作権を放棄するのではなく、著作物の独占を防ぐために著作権を主張しています。
掲載されたプログラムコード、サンプルデータ、その他の情報を利用したことによって生じたいかなる損失や損害に対して一切責任を負いません。


戻る


株式会社 オープン・システム・ソリューションズ
 
Copyright ©  OpenSystemSolutions Inc. All Rights Reserved.