我想要生成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