0

我有一个像这样的字符串:

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

我在我的应用程序中使用 Ruby on Rails。我试图通过将 1-16 附加到 66ea2557 的末尾来制作 16 个网址,以获得类似:

"/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不一定每次都相同,表示您需要的网址数量
  • 您不需要[*,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
(1..16).each do |i|
  puts "/system/path/513/b02/36a/66ea2557#{i}.swf"
end
于 2013-03-09T12:37:01.237 回答
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 回答