给定名称“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/