我有一些路径为
的文件内容/uploads/test/12/1234.jpg
如何用某种东西替换所有这样的结构,以便可以找到这些结构并将其替换?
例如:/ uploads / test / [random no] / [random no] .jpg转换为“ test”
在知道文件名时对此进行了尝试:
content = content.gsub("/test/#{filename}", test.url)
但是当文件名可以是任何东西时(在这种情况下为随机数),如何在ruby中实现呢?
在这里使用正则表达式最好吗?
答案 0 :(得分:1)
您总是可以像对待数组中的组件一样对待这些值:
path = "/uploads/test/12/1234.jpg"
# Disassemble
parts = path.split('/')
# Purely random number
parts[3] = '%02d' % SecureRandom.rand(0..100)
# Number plus original path component
parts[4] = '%05d.%s' % [ SecureRandom.rand(0..100000), parts[4].split('.')[1] ]
# Reassemble
parts.join('/')
# => "/uploads/test/100/00065.jpg"
工作不必太复杂。
相反:
path = "/uploads/test/12/1234.jpg"
path.sub(%r[\d\d\/\d\d\d\d], 'test')
# => "/uploads/test/test.jpg"
此处%r[...]
优先于/.../
使用,因为/
出现在图案中。 \d
代表任意数字,因此\d\d
是两位数字,依此类推。 sub
替换为'test'
。