我想提取的名字在圖像源文件中,這裏的字符串格式化名稱出圖像源
source ='<img src="/ratefinder/images/providers/NAME-1307548896.gif">'
,所以我一直在使用一個切片(39試過格式.. -1),然後分割(' - ')來獲得名稱,但我得到一個無類錯誤。解決這個問題最好的方法是什麼?
編輯:切片
我想提取的名字在圖像源文件中,這裏的字符串格式化名稱出圖像源
source ='<img src="/ratefinder/images/providers/NAME-1307548896.gif">'
,所以我一直在使用一個切片(39試過格式.. -1),然後分割(' - ')來獲得名稱,但我得到一個無類錯誤。解決這個問題最好的方法是什麼?
編輯:切片
source.slice(0..39)
會得到你這個部分:
<img src="/ratefinder/images/providers/N
我想你的意思是 source.slice(39..-1)
,或source[39..-1]
:
"NAME-1307548896.gif">
然後split
將正常工作。
使用下面的正則表達式:
/.*\/(.*?)-.*$/
即:
name = /.*\/(.*?)-.*$/.match(source)[1]
由於您似乎在解析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"
'slice(0..39)'不會得到'NAME-1307548896.gif'部分......那是你的意思嗎? – Ryan 2013-04-21 21:45:06
是的,我試圖刪除前39個常量字符,然後拆分它並在連字符上創建一個新字符串。 – MattLock 2013-04-21 21:49:28