2011-04-20 190 views
2
def name 
    @name || "#{self.first_name} #{self.last_name}" 
end 

如果名字和姓氏都是空的名字是空格“”。如何重写右侧的空字符串“”而不是空格“”?帮我摆脱空间“”

回答

7

你可以只在末尾添加.strip

>> ln = 'last' #=> "last" 
>> fn = 'first' #=> "first" 
>> "#{fn} #{ln}".strip #=> "first last" 
>> fn = nil #=> nil 
>> ln = nil #=> nil 
>> "#{fn} #{ln}".strip #=> "" 
+0

真的很漂亮! – 2011-04-20 13:44:58

6
def name 
    @name ||= [first_name, last_name].compact * " " 
end 

该方案具有不包括尾随或前导空格当name为nil它工作在普通的优势案件(即任何数量的字符串)。

+1

这里'*'和'join'有相同的效果吗?我不知道这种用法。 – sawa 2011-04-20 13:41:37

+1

@sawa:如果参数是一个字符串,它将和join一样,否则会重复x次('>>%w(abc)*“,”#=>“a,b,c “')。 – 2011-04-20 13:53:12

+0

@迈克尔我不知道前半部分。谢谢。 – sawa 2011-04-20 14:02:01