编程和Ruby的新手。我正在使用iStock API,需要发送一个fileID来请求有关我的文件的信息。
我需要的示例文件可以在iStock上请求信息:
["iStock_000001053628Small.jpg", "iStock_000002270952Big_Web.mov", "ist2_7034929-blurred-commuter.jpg", iStock_000000042199Medium.jpg]
使用irb,我发送给iStock API的代码:
require 'xmlrpc'
parameters = {:apiKey=>"#", :fileID=>"1053628"}
server = XMLRPC::Client.new2( "http://api.istockphoto.com/webservices/xmlrpc")
server.call("istockphoto.image.getInfo", parameters)
挑战: 我需要从数组中提取fileID号。这意味着我必须从文件号的前面取出所有的零。但是,文件编号的长度不同,并且每个图像的正面的零数不同。
istock.each do |x|
result = ' '
x.scan(/\d+/) do |y|
if y.to_i > 4
result << y
end
puts result
end
end
000001053628
000002270952
7034929
000000042199
我不确定如何处理这个问题,因为如果我为0的集合设置规则,可能有一段时间实际的fileID也包含这些。
答案 0 :(得分:2)
我不确定您需要支持哪些不同的文件名格式,但这样的内容对我有用:
$ irb
irb(main):001:0> test_data = ["iStock_*000001053628*Small.jpg", "iStock_000002270952BigWeb.mov", "ist2_7034929-blurred-commuter.jpg", "iStock_*000000042199*Medium.jpg"]
=> ["iStock_*000001053628*Small.jpg", "iStock_000002270952Big Web.mov", "ist2_7034929blurred-commuter.jpg", "iStock_*000000042199*Medium.jpg"]
irb(main):002:0> test_data.map do |d|
irb(main):003:1* d.scan(/\d{4,}/).first.gsub(/^0+/,'')
irb(main):004:1> end
=> ["1053628", "2270952", "7034929", "42199"]
irb(main):005:0>
答案 1 :(得分:0)
我不确定这条线是什么:
if y.to_i > 4
但听起来你只想删除前导零,对吗?
在这种情况下,试试这个:
# Parse the string as an integer, then re-format as a string.
result << y.to_i.to_s
这会在您的result
数组中填充有效删除前导零的字符串。