Ruby on Railsを使用していて、文字列の最初の単語のみを表示したい。
私の壊れたコード:<%= @user.name %>
表示Barack Obama
。
Barack
と他の場所にObama
を表示したいと思います。
どうすれば分割して表示できますか?
短くて読みやすい:
name = "Obama Barack Hussein"
puts "#{name.partition(" ").first} - #{name.partition(" ").last}"
# Obama - Barack Hussein
姓と名の順序が逆の場合
name = "Barack Hussein Obama"
puts "#{name.rpartition(" ").last} - #{name.rpartition(" ").first}"
# Obama - Barack Hussein
> "this is Ruby".split.first
#=> "this"
あなたが持っていると言ってみましょう:
string = "Barack Obama"
split_string = string.split()
Rubyドキュメント:
パターンが省略されている場合、$の値。使用されている。もし$;はnil(デフォルト)であり、strは、 `‘が指定されたかのように空白で分割されます。
その後、split_string[0] # ==> Barack
ou split_string[1] # ==> Obama
あなたは簡単にすることができます:
# `split` default is split by space `' '`
<%= @user.name.split.first %>
私は さらに読む について decorators についてメソッドを定義できます(またはヘルパーに依存することもできます):
# It will give you 'Barack'
def first_name
name.split.first
end
# It will give you 'Obama'
def last_name
name.split.last
end