def formatted(format)
case format
when :readable_full
[first_name, middle_initial, last_name].select(&:present?).join(" ").titleize
when :readable_short
[first_name, last_name].select(&:present?).join(" ").titleize
else
fail InvalidFormatError
end
end
# :readable_full => Mike A Smith
# :readable_short => Mike Smith
现在我想做这样的事情
# :readable_first_initial
=>史密斯先生
假设这样的事情
when :readable_first_initial
[first_name, + ".", last_name].select(&:present?).join(" ").titleize
我如何获得第一个角色?
答案 0 :(得分:1)
使用String#[]
。
str = "ABCD"
str[0] # => "A"
因此,按照您的首选格式,您可以执行以下操作:
[first_name[0], ".", last_name].select(&:present?).join(" ").titleize
编辑:正如所指出的,这会增加额外的空间。如果您更喜欢这种格式,您可以这样做:
[first_name[0] + ".", last_name].select(&:present?).join(" ").titleize
如果您不喜欢使用+
:
["#{first_name[0]}.", last_name].select(&:present?).join(" ").titleize