2016-02-01 2 views
1

Я просматриваю пару имен сайта, и мне нужно только имя. Как удалить все в строке и просто вывести первое имя: VeronicaПолучение первого имени и удаление остальных в строке

Это то, что я правильно знаю, помните, что это другие имена.

name = "Name: Veronica Ljunglöf" 
name.gsub!("Name: ", '') 
+4

Как вы определяете * имя *? А как насчет людей с несколькими именами, как насчет людей без имени? Я советую прочитать [Falsenesss Programmers Believe About Names] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) – spickermann

+0

@spikermann, да, как ["Шер" ] (https://en.wikipedia.org/wiki/Cher), и ["Барнаби Мармадюк Алоизиус Бенджи Кэбберт Дартаньян Эгберт Феликс Гаспар Гумберт Игнатий Джейден Каспер Лерой Максимилиан Недди Обиюлу Пепин Квиллиам Розенкранц Секстон Тедди Апвуд Виватма Уэйланд Ксилон Ярдли Захари Усански" ] (http://www.historyrundown.com/top-5-people-with-the-longest-names/). –

+0

Как отметил @spickermann, ваш код слишком наивен. Не предполагайте, что имена соответствуют форме имени/имени. Многие общества используют фамилию/имя, и ваш код может привести к ужасающим искаженным результатам, если вы предполагаете, что он поступил правильно. Вместо этого * СПРОСИТЕ * человек, каковы их имена и фамилии. –

ответ

4

Если формат выглядит последовательным, вы могли бы сделать:

name = "Name: Veronica Ljunglöf" 
=> "Name: Veronica Ljunglöf" 
name.split[1] 
=> "Veronica" 
+0

Что делать, если у человека есть второе имя: Джон Саллад Доу? – SHUMAcupcake

+1

Не забудьте использовать второй аргумент для 'split', чтобы остановить расщепление после * n * th part:' name.split ('', 3) [1] '. –

0

Вот альтернатива, более многословным, но и более общий характер. Вы можете сопоставить несколько шаблонов и можете адаптировать их к именам и фамилиям (например).

"Name: Veronica Ljunglöf".match(/Name: (\w*) \w*/) #=> #<MatchData "Name: Veronica Ljunglöf" 1:"Veronica"> 

доступа "Вероника" с MatchData # захватывает

"Name: Veronica Ljunglöf".match(/Name: (\w*) \w*/).captures #=> ["Veronica"] 

Возьмите первый (и единственный) захватить

"Name: Veronica Ljunglöf".match(/Name: (\w*) \w*/).captures.first #=> "Veronica" 
1

Я хотел бы использовать регулярное выражение:

r =/
    :\s+   # match a colon followed by one or more spaces 
    \K   # forget everything matched so far 
    [[:alpha:]]+ # match one or more letters 
    /x   # extended/free-spacing regex definition mode 

'name = "Name: Veronica Lodge"'[r] 
    #=> "Veronica"<sup>1</sup> 

That's the one Archie is looking at.

Смежные вопросы