2011-07-25 7 views
0

プログラミングとRubyの新機能。私はiStock APIを使って作業しており、ファイルに関する情報を要求するためにfileIDを送信する必要があります。私はiStockの上の情報を要求するために取得する必要があることを持っている配列から数値を取り出すRuby

例ファイル: IRBでの作業

["iStock_000001053628Small.jpg", "iStock_000002270952Big_Web.mov", "ist2_7034929-blurred-commuter.jpg", iStock_000000042199Medium.jpg] 

、私はiStockののAPIに送信コード:

require 'xmlrpc' 
parameters = {:apiKey=>"#", :fileID=>"1053628"} 
server = XMLRPC::Client.new2("http://api.istockphoto.com/webservices/xmlrpc") 
server.call("istockphoto.image.getInfo", parameters) 

チャレンジ: ファイルID番号を配列から抽出する必要があります。これは、すべてのゼロをファイル番号の先頭から取り除かなければならないことを意味します。しかし、ファイル番号は長さが異なり、前面のゼロ数は画像ごとに異なります。

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のセットのためのルールを設定した場合、実際のファイルIDはまた、それにこれらを持っている時があるかもしれませんので、この問題にアプローチするかどうかはわかりません。

答えて

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> 
+0

ここではgsubではなく、subで十分でした。 'd.scan(/ [1-9] \ d {3、} /)。first'、または単に' d.scan(/ \ d {4、} /)。 .to_i'を使って生の数字を取得します。 –

+0

乾杯!これも動作します! – iamgato

0

私はこの行が何であるかはよく分からない:

if y.to_i > 4 

しかし先行ゼロを削除したいと思うのは正しいですか?これは、先行ゼロ効果的に除去されている文字列を使用してresult配列を移入します

# Parse the string as an integer, then re-format as a string. 
result << y.to_i.to_s 

:その場合は

、ちょうどこれを試してみてください。

+0

ありがとうございます! – iamgato

関連する問題