web-dev-qa-db-ja.com

Rubyで文字列の最初の単語を表示する

Ruby on Railsを使用していて、文字列の最初の単語のみを表示したい。

私の壊れたコード:<%= @user.name %>表示Barack Obama

Barackと他の場所にObamaを表示したいと思います。

どうすれば分割して表示できますか?

19
DanielsV

短くて読みやすい:

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
18
peter
> "this is Ruby".split.first
#=> "this"
34
chad_

あなたが持っていると言ってみましょう:

string = "Barack Obama"
split_string = string.split()

Rubyドキュメント:

パターンが省略されている場合、$の値。使用されている。もし$;はnil(デフォルト)であり、strは、 `‘が指定されたかのように空白で分割されます。

その後、split_string[0] # ==> Barack ou split_string[1] # ==> Obama

2
nbeck

あなたは簡単にすることができます:

# `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
0
Brenno Costa