title
、first_name
、middle_name
、からフルネームを生成したいlast_name
。たとえば、ビリー・ボブ・ソーントン氏。しかし、title
andmiddle_name
はオプションであり、先頭または二重のスペースを取得したくありません。私はそれらを行う多くの方法を思いつきましたが、どれも本当にエレガントに見えません. これまでの私のテクニックは次のとおりです
full_name = "#{title} #{first_name} #{middle_name} #{last_name}"
#FAIL. Leading and double spaces result
full_name = "#{title} #{first_name} #{middle_name} #{last_name}".gsub(/^ /,'').gsub(/ /,' ')
#Works but all that regex tacked on the end is very ugly
full_name = "#{title}#{title.nil? || title.empty? ? '' : ' '}#{first_name} #{middle_name}#{middle_name.nil? || middle_name.empty? ? '' : ' '}#{last_name}"
#Works but goes on forever
私はレールを使用するので、.nil? || .empty?
to.blank?
を減らして最後のものをもう少し簡潔にすることができますが、もっと良い方法があると思わずにはいられません。