Ruby 从图像源格式化名称

Ruby 从图像源格式化名称,ruby,string,Ruby,String,我试图从图像源文件中提取一个名称,下面是字符串的格式 source ='<img src="/ratefinder/images/providers/NAME-1307548896.gif">' source='' 因此,我尝试使用一个切片(39..-1)和一个拆分('-')来获取名称,但得到了一个nil类错误。提取这个的最佳方法是什么 编辑:切片使用以下正则表达式: /.*\/(.*?)-.*$/ 即: name = /.*\/(.*?)-.*$/.match(source)

我试图从图像源文件中提取一个名称,下面是字符串的格式

source ='<img src="/ratefinder/images/providers/NAME-1307548896.gif">'
source=''
因此,我尝试使用一个切片(39..-1)和一个拆分('-')来获取名称,但得到了一个nil类错误。提取这个的最佳方法是什么


编辑:切片使用以下正则表达式:

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

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

使用以下正则表达式:

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

name = /.*\/(.*?)-.*$/.match(source)[1]
source.slice(0..39)
将为您提供此部件:


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

"NAME-1307548896.gif">
然后,拆分将正常工作。

源代码。切片(0..39)
将获得此部分:


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

"NAME-1307548896.gif">

然后拆分将正常工作。

因为您似乎正在解析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"
需要“nokogiri”
需要“路径名”
来源=“”
src=Pathname.new Nokogiri::HTML(source).css('img').first.attributes['src'].value
filename=src.base_name.to_s#=>“name-1307548896.gif”

由于您似乎正在解析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"
需要“nokogiri”
需要“路径名”
来源=“”
src=Pathname.new Nokogiri::HTML(source).css('img').first.attributes['src'].value
filename=src.base_name.to_s#=>“name-1307548896.gif”

切片(0..39)
将无法获取
名称-1307548896.gif
部分。。。这就是你想要做的吗?是的,我试图删除前39个常量字符,然后将其拆分并在连字符上创建一个新字符串。
slice(0..39)
将无法获得
NAME-1307548896.gif
部分。。。这就是你想要做的吗?是的,我试图删除前39个常量字符,然后拆分它并在连字符上创建一个新字符串。我的错误是我在上面做了一个编辑,我仍然得到nil:nilclass的未定义方法“split”。谢谢!我没有将[0]放在拆分后,这可能是我出错的原因。如果可以的话,我会投你一票。我犯了一个错误,我在上面做了一个编辑,我仍然得到nil:nilclass的未定义方法“split”。谢谢!我没有将[0]放在拆分后,这可能是我出错的原因。如果可以的话,我会投你一票。