1

我正在尝试从图像源文件中提取名称,这是字符串的格式

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

所以我尝试使用 slice(39..-1) 然后使用 split('-') 来获取名称,但我得到一个 nil 类错误。提取这个的最好方法是什么?

编辑:切片

4

3 回答 3

1

使用以下正则表达式:

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

那是:

name = /.*\/(.*?)-.*$/.match(source)[1]
于 2013-04-21T21:43:11.843 回答
0

source.slice(0..39)将为您提供这部分:

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

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

"NAME-1307548896.gif">

然后split将正常工作。

于 2013-04-21T21:52:13.397 回答
0

由于您似乎正在解析 html 和文件路径,因此您可能希望使用实际的解析器库而不是正则表达式。

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"
于 2013-04-21T22:07:15.927 回答