2013-04-21 34 views
1

我想提取的名字在圖像源文件中,這裏的字符串格式化名稱出圖像源

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

,所以我一直在使用一個切片(39試過格式.. -1),然後分割(' - ')來獲得名稱,但我得到一個無類錯誤。解決這個問題最好的方法是什麼?

編輯:切片

+0

'slice(0..39)'不會得到'NAME-1307548896.gif'部分......那是你的意思嗎? – Ryan 2013-04-21 21:45:06

+0

是的,我試圖刪除前39個常量字符,然後拆分它並在連字符上創建一個新字符串。 – MattLock 2013-04-21 21:49:28

回答

0

source.slice(0..39)會得到你這個部分:

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

我想你的意思是 source.slice(39..-1),或source[39..-1]

"NAME-1307548896.gif"> 

然後split將正常工作。

+0

我的錯誤,我做了上面的編輯我做了一個,我仍然得到未定義的方法'分裂'爲零:nilclass。 – MattLock 2013-04-21 22:06:23

+0

@MattLock:[你有沒有試過類似的東西?](http://codepad.org/kRSmyPy3) – Ryan 2013-04-21 22:07:28

+0

謝謝!我之前沒有把[0]放在分裂之後,可能是爲什麼我得到這個錯誤。如果可以的話,我會投票給你。 – MattLock 2013-04-21 22:30:36

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"