2015-06-05 3 views
15

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

My broken code: <%= @user.name %>Barack Obama.

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

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

ответ

13

Шорт и читаем:

name = "Obama Barack Hussein" 
puts "#{name.partition(" ").first} - #{name.partition(" ").last}" 
# Obama - Barack Hussein 

и если порядок первой и LastName сторнируется

name = "Barack Hussein Obama" 
puts "#{name.rpartition(" ").last} - #{name.rpartition(" ").first}" 
# Obama - Barack Hussein 
+0

Ницца, не знал о 'перечислимых # partition'. Может быть, кто-то (может быть, я!) Мог бы сравнить его с «String # split» для этого прецедента ... :) – mecampbellsoup

1

Препятствует сказал, что вы едите:

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

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

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

после этого использования split_string[0] # ==> Barack НУ split_string[1] # ==> Obama

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

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

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

Я рекомендую further readingdecorators о котором можно определить метод, как (или вы можете полагаться на помощника, а):

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

# It will give you 'Obama' 
def last_name 
    name.split.last 
end 
Смежные вопросы