5

私は MessageFormat を使用して、次のようなテンプレートでいくつかのアドレスをフォーマットしています:

"{0}\n{1}\n{2}\n{3}, {4} {5}"

どこ

  • 0 = 番地 1
  • 1 = 番地 2
  • 2 = 番地 3
  • 3 = 都市
  • 4 = 状態
  • 5 = 郵便番号

これらのフィールドのほとんどは、キャプチャ時にオプションです。たとえば、ストリート 3 がない場合に空行を避けるにはどうすればよいですか? この「{0}{1}{2}{3}{4}{5}」のようなテンプレートを使用して、それに応じて「street 3\n」または「」を置き換えることができますが、テンプレートは提供しませんフォーマッティングに大いに役立ちます。

フォーマット文字列に条件を含める方法はありますか? または、条件付き書式をサポートする別の、できれば軽量のテンプレート ツールはありますか?

4

8 に答える 8

7

編集:書き直して...

デザインに関心がない場合は、テンプレート エンジンを無作為に、またはその名前が気に入ったなどの理由で簡単に選択できます。エンジンを選択するための基準がない場合、どのエンジンを選択するかは誰が気にしますか?

一方、 Model-View-Controller (MVC) デザイン パターンを使用するなど、デザインに関心がある場合は、選択肢がすぐに狭まります。

ここでの回答のほとんどは、さまざまなテンプレート エンジンの能力を強調しています。しかし、MVC の要点は、それ以上のことをしたくないということです。なぜなら、テンプレートでこれ以上のことを行うと、最終的には非常に悪い結果を招くからです。ビジネス ロジックはビューに属さず、モデルに属します。制御ロジックはコントローラに属します。MVC パターンを実際に適用するテンプレート エンジンは 1 つだけです。MVC パターンを望まない場合 (おそらくそれを超えようとしている場合)、その 1 つのエンジンは依然として、自分自身を傷つけないようにし、機能を適切に分割することを奨励します。

優れたテンプレート エンジンは本当に 1 つだけです: StringTemplateです。理由の詳細については、http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdfを参照してください。

複数のプラットフォーム (Python、Java、.Net) だけでなく、多くの代替手段や StringTemplate ルールで使用しました。

決定済み。楽しみ。幸運をお祈りしています。

于 2008-11-20T02:49:36.890 に答える
2

どれだけ軽量だと思うかわかりませんが、 ApacheVelocityはJava用の最も有名なテンプレートエンジンの1つです。

于 2008-11-06T21:53:47.230 に答える
2

jguru StringTemplates

これは、サイト jGuru を構築するために使用されました。

于 2008-11-06T22:07:55.283 に答える
1

'\n'自分が行っている方法でフォーマットを行ってから、複数のsの実行を1つ'\n'に置き換えることで、空白行を削除することができます。

result = result.replaceAll("\n+", "\n");
于 2008-11-06T21:55:38.193 に答える
0

VelocityまたはFreemarkerを使用します。

于 2008-11-06T21:58:15.943 に答える
0

フリーマーカーはかなり良いです。軽量で高速、条件付き書式設定、その他多くの機能を備えています。

于 2009-01-08T16:29:19.367 に答える