1. ホーム
  2. java

[解決済み] ベロシティテンプレートに似たjavaの文字列置換

2022-03-06 19:19:35

質問

を使用することはできますか? String オブジェクトにテキストを渡すと、その文字列が発生したときに置換されるような、Java の置換メカニズム。
例えば、テキストが:

Hello ${user.name},
    Welcome to ${site.name}. 

私が持っているオブジェクトは "user""site" . の中で指定された文字列を置き換えたいのです。 ${} をオブジェクトの相当する値で置き換えます。これは、ベロシティテンプレートのオブジェクトを置き換えるのと同じです。

解決方法は?

使用方法 StringSubstitutor を Apache Commons Text からダウンロードしてください。

https://commons.apache.org/proper/commons-text/

やってくれる(しかもオープンソースで...)

 Map<String, String> valuesMap = new HashMap<String, String>();
 valuesMap.put("animal", "quick brown fox");
 valuesMap.put("target", "lazy dog");
 String templateString = "The ${animal} jumped over the ${target}.";
 StringSubstitutor sub = new StringSubstitutor(valuesMap);
 String resolvedString = sub.replace(templateString);