我想要生成title
,first_name
,middle_name
和last_name
的全名。例如比利鮑勃桑頓先生。但title
和middle_name
是可選的,我不想得到任何領先或雙重空間。我已經想出了很多方法來做他們,但沒有一個看起來很優雅。這裏是我的技術,到目前爲止在Ruby中設置全名的最簡潔方式是什麼?
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?
到.blank?
,使最後一個稍微更簡潔,但我不禁想到,有一個更好的方式。
別忘了後綴:如果你還沒有看過「少年」,「第三」等 – 2012-08-13 03:07:23
你應該有這樣一個閱讀: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – matt 2012-08-13 05:12:36
我還沒有看到@matt,它引起了我作爲一長串投訴和問題,而不是許多(任何)解決方案。作爲名字中有撇號的人,我非常瞭解嚴格限制姓名的問題。 – brad 2012-08-13 06:30:41