2011-12-28 9 views
2

これは私がしばらくの間把握しようとしてきたものですが、それを理解することはできません。条件付きでRubyで文字列を書式設定する方法は?

のは、私はこれらの四つの要素があるとしましょう:、"%s was at the location \"%s\" around %s and said %s" % [name,location,time.to_s,text]:私はそうのように、フォーマットするためstr#%を使用した場合

  • name = "Mark"
  • location = ""
  • time = Time.now
  • text - "foo"

をとどうすれば空白と孤立した言葉の問題を避けますか? (たとえば、「2011-12-28T020500Z-0400とfoo」の周りに「マークがあった」」)

他にも使用できる技術はありますか?

答えて

3

文字列を少しずつ作成し、結果を組み立てるだけです。あなたが.blankへのアクセス権を持っていれば、あなたは簡単に次のようにクリーンアップできますか? (空白だと思います)

parts = [] 
parts << name if name && !name.empty? 
parts << "was" if name && !name.empty? && location && !location.empty? 
parts << %{at location "#{location}"} if location && !location.empty? 
parts << "around #{time}" 
parts << "and" if location && !location.empty? && text && !text.emtpy? 
parts << "said #{text}" if text && !text.empty? 
parts.join(" ") 
+0

はい、空白になります。 Active Supportがインストールされているので、 'active_support/core_ext/object/blank''を' require 'に入れるだけです。 – Mark

+0

それも私が考えてきたものです。 'part <<"や "if!location.blank?"のようなことはうまくいくでしょう。 – Mark

関連する問題