Отображать первое слово в строке с Ruby

Я использую ruby ​​on rails, и я хочу отображать только первое слово строки.

Мой сломанный код: <%= @user.name %> отображение Barack Obama.

Я хотел бы, чтобы он отображал Barack, а в другом месте Obama.

Как я могу разбить его и отобразить?

Ответы

Ответ 1

Короткий и читаемый:

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

Ответ 2

> "this is ruby".split.first
#=> "this"

Ответ 3

Допустим, что у вас есть:

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

В рубиновой документации:

Если шаблон опущен, значение $; используется. Если $; nil (что по умолчанию), str разбивается на пробелы, как если бы `` были указаны.

после этого используйте split_string[0] # ==> Barack ou split_string[1] # ==> Obama

Ответ 4

Вы можете просто:

# `split` default is split by space `' '`
<%= @user.name.split.first %>

Я рекомендую дальнейшее чтение об декораторах, где вы можете определите метод, подобный (или вы также можете положиться на помощника):

# It will give you 'Barack'
def first_name
  name.split.first
end

# It will give you 'Obama'
def last_name
  name.split.last
end