2013-04-21 2 views
1

Я пытаюсь извлечь имя из источника изображения файла, вот формат строкиФорматирование Имени из источника изображения

source ='<img src="/ratefinder/images/providers/NAME-1307548896.gif">' 

Так что я попытался использовать ломтик (39 .. -1), а затем split ('-'), чтобы получить имя, но я получаю ошибку класса nil. Каким будет лучший способ сделать это?

EDIT: ломтик

+0

'slice (0..39)' не получит часть 'NAME-1307548896.gif' ... это то, что вы хотели сделать? – Ryan

+0

Да, я пытался сбросить первые 39 постоянных символов, затем разбить его и создать новую строку в дефис. – MattLock

ответ

0

source.slice(0..39) поможет вам эту часть:

<img src="/ratefinder/images/providers/N 

Я думаю, Вы имели в виду source.slice(39..-1) или source[39..-1]:

"NAME-1307548896.gif"> 

Тогда split будет работать должным образом.

+0

Моя ошибка Я сделал надпись выше Я сделал, я все еще получаю undefined метод «split» для nil: nilclass. – MattLock

+0

@MattLock: [Вы попробовали что-то вроде этого?] (Http://codepad.org/kRSmyPy3) – Ryan

+0

Спасибо! Я не поставил [0] после раскола, вероятно, почему я получил ошибку. Я бы проголосовал за вас, если бы мог. – MattLock

1

использовать следующее регулярное выражение:

/.*\/(.*?)-.*$/ 

То есть:

name = /.*\/(.*?)-.*$/.match(source)[1] 
0

Поскольку вы, кажется, разбираете html и пути к файлам, вы можете использовать фактические библиотеки парсеров вместо regexp.

require 'nokogiri' 
require 'pathname' 

source = '<img src="/ratefinder/images/providers/NAME-1307548896.gif">' 
src = Pathname.new Nokogiri::HTML(source).css('img').first.attributes['src'].value 
filename = src.base_name.to_s # => "NAME-1307548896.gif" 
Смежные вопросы