1. ホーム
  2. java

[解決済み] sl4fjのような一般的な文字列置換関数はありますか?

2022-03-11 20:28:49

質問

sl4fjで文字列メッセージを作成したい場合、置換を利用した素晴らしいアプローチがあります。 例えば、以下のようなものです。

logger.info("Action {} occured on object {}.", objectA.getAction(), objectB);

もし、数個以上の置換が必要な場合は、次のようなものになります。

logger.info("Action {} occured on object {} with outcome {}.", 
    new Object[]{objectA.getAction(), objectB, outcome});

私の質問は:私が文字列を作成するための一般的な方法はありますか(そしてちょうどslf4jのログメッセージではありません)?のような何か。

String str = someMethod("Action {} occured on object {}.", objectA.getAction(), objectB);

または

String str = someMethod("Action {} occured on object {} with outcome {}.", 
    new Object[]{objectA.getAction(), objectB, outcome});

標準のJavaライブラリにある場合、その"someMethod"は何でしょう?

どのように解決するのですか?

文字列の書式

String str = String.format("Action %s occured on object %s.",
   objectA.getAction(), objectB);

または

String str = String.format("Action %s occured on object %s with outcome %s.",
   new Object[]{objectA.getAction(), objectB, outcome});

また、パラメータを入れ替えるなど、数値の位置を利用することも可能です。

String str = String.format("Action %2$s occured on object %1$s.",
   objectA.getAction(), objectB);