2013-03-09 2 views
0

에 루비에 합치는 같은 문자열이있다.문자열 조작 나는 레일

"/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" 

가 어떻게 루비에서이 작업을 수행 할 수 있습니다 : 내가 좋아하는 뭔가를 얻을 수 66ea2557의 끝에 1-16을 추가하여 16 개 URL을 만들려고 노력하고 있어요?

답변

2

그 가정 :

  • 당신은 당신의 통제에서 어딘가에 아마에서 "/system/path/513/b02/36a/66ea2557[*,0].swf,16"를 제공하고 있으며
  • 을 구문 분석 할 필요가있다
  • 문자열 끝에 숫자 16이 매번 동일 할 필요는없고 num을 나타냅니다. 당신이
  • 을 필요로하는 URL의 BER 당신은 아무것도 문자열의 [*,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"] 
0
(1..16).each do |i| 
    puts "/system/path/513/b02/36a/66ea2557#{i}.swf" 
end 
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; 
0

당신은 사용할 수 String#% :

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