Отображать первое слово в строке с 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