StrSubstitutorクラスは名前の通り文字列中のキーワード変換を行う.キーワードのプレフィックス・ポストフィックスの変更並びに変換後の値中のキーワードに対しての変換もサポートしている優れものである.この車輪の再発明はしないのが賢明だろう.
import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.text.StrSubstitutor; import org.junit.Test; import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.*; public class StrSubstTest { @Test public void testSubst() { final String TEST_STR = "${PATTERN} cat"; final String EXPECTED_STR = "black cat"; StrSubstitutor subst = new StrSubstitutor( prepareValueMap() ); assertThat( subst.replace( TEST_STR ), is( EXPECTED_STR ) ); } @Test public void testSubstWithPrefix() { final String TEST_STR = "<<PATTERN>> cat"; final String EXPECTED_STR = "black cat"; StrSubstitutor subst = new StrSubstitutor( prepareValueMap(), "<<", ">>" ); assertThat( subst.replace( TEST_STR ), is( EXPECTED_STR ) ); } @Test public void testSubstInVariable() { final String TEST_STR = "${PATTERN} cat"; final String EXPECTED_STR = "calico(white,black,brown) cat"; StrSubstitutor subst = new StrSubstitutor( prepareValueMap2() ); subst.setEnableSubstitutionInVariables( true ); assertThat( subst.replace( TEST_STR ), is( EXPECTED_STR ) ); } private Map<String,String> prepareValueMap() { Map<String,String> map = new HashMap<String,String>(); map.put( "PATTERN", "black" ); map.put( "SIZE", "big" ); return map; } private Map<String,String> prepareValueMap2() { Map<String,String> map = new HashMap<String,String>(); map.put( "PATTERN", "calico(${COLORS})" ); map.put( "COLORS", "white,black,brown" ); return map; } }
0 件のコメント:
コメントを投稿