0

私は次のような文字列を持っています:

"/system/path/513/b02/36a/66ea2557[*,0].swf,16"

アプリケーションに Ruby on Rails を使用しています。1-16 を 66ea2557 の末尾に追加して、次のようなものを取得することにより、16 個の URL を作成しようとしています。

"/system/path/513/b02/36a/66ea25571.swf"
"/system/path/513/b02/36a/66ea25572.swf"
..
"/system/path/513/b02/36a/66ea255715.swf"
"/system/path/513/b02/36a/66ea255716.swf"

Rubyでこれを行うにはどうすればよいですか?

4

4 に答える 4

2

仮定して:

  • おそらくあなたの制御外のどこかから与えられ"/system/path/513/b02/36a/66ea2557[*,0].swf,16"たものであり、解析する必要があります
  • 文字列の末尾の数字16は毎回同じとは限らず、必要な URL の数を示します
  • 文字列の一部は必要[*,0]なく、必ずしも何かを意味するわけでもありません

私が思いついた:

string = "/system/path/513/b02/36a/66ea2557[*,0].swf,16"
base_path, _, file_extension, num_urls = string.split(/(\[\*,0\])|,/)
# => ["/system/path/513/b02/36a/66ea2557", "[*,0]", ".swf", "16"]
(1..num_urls.to_i).map { |i| "#{base_path}#{i}#{file_extension}" }
# => ["/system/path/513/b02/36a/66ea25571.swf",
      "/system/path/513/b02/36a/66ea25572.swf",
      ...
      "/system/path/513/b02/36a/66ea255716.swf"]
于 2013-03-09T13:52:28.717 に答える
0

単純なループを試すことができます。何かのようなもの:

#test.rb

arr = Array.new();
for i in 1..16
    arr[i-1] = "/system/path/513/b02/36a/66ea2557" + i.to_s;
end

puts arr;
于 2013-03-09T12:42:56.033 に答える
0

String#%を使用できます:

path = "/system/path/513/b02/36a/66ea2557%s.swf"
(1..16).map {|index| path % index}
于 2013-03-09T13:24:48.457 に答える
0
(1..16).each do |i|
  puts "/system/path/513/b02/36a/66ea2557#{i}.swf"
end
于 2013-03-09T12:37:01.237 に答える