/ /文字列の操作とRubyon Railsでの連結-ruby、string、ruby-on-rails-3.2

Ruby on Railsでの文字列操作と連結 - ruby​​、string、ruby-on-rails-3.2

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

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

私はアプリケーションにRubyon Railsを使用しています。66ea2557の末尾に1-16を追加して、次のような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でこれを行うにはどうすればよいですか?

回答:

回答№1は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"]

回答№2の場合は0
(1..16).each do |i|
puts "/system/path/513/b02/36a/66ea2557#{i}.swf"
end

回答№3の場合は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;

回答№4の場合は0

あなたは使うことができます ストリング#%

path = "/system/path/513/b02/36a/66ea2557%s.swf"
(1..16).map {|index| path % index}