给定名称“Rigobert Song”如何返回“Rigobert S.”?
名称可以是Rigobert J. Song或只是Rigobert。我想先返回Rigobert S.后返回Rigobert
我写了这个,很管用。还有什么“红宝石之路”吗?

def initials_for(user)
  if user.name.split.size > 1
    "#{user.name.split.first} #{user.name.split.last[0]}"
  else
    user.name
  end
end

最佳答案

"Rigobert J. Song"
.gsub(/\s+.+\s+/, " ").sub(/(?<=\s\S).+/, ".")
# => "Rigobert S."

"Rigobert Song"
.gsub(/\s+.+\s+/, " ").sub(/(?<=\s\S).+/, ".")
 # => "Rigobert S."

"Rigobert"
.gsub(/\s+.+\s+/, " ").sub(/(?<=\s\S).+/, ".")
 # => "Rigobert"

关于ruby-on-rails - 有没有更好的方法来返回名字和名字的缩写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18360900/

10-13 04:47