字符串操作和Ruby在rails上的连接

时间:2013-03-09 11:31:43

标签: ruby string ruby-on-rails-3.2

我有一个像:

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

我正在为我的应用程序使用Ruby on Rails。我试图通过在66ea2557的末尾添加1-16来获得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 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:0)

(1..16).each do |i|
  puts "/system/path/513/b02/36a/66ea2557#{i}.swf"
end

答案 2 :(得分: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;

答案 3 :(得分:0)

您可以使用String#%

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