我有一些文件的内容与路径
/uploads/test/12/1234.jpg
我怎么能代替所有这些结构的东西,这样我可以找到那些结构和GSUB呢?
如:/上传/测试/ [随机没有] / [随机无]的.jpg到 '测试'
尝试过这种当文件名被称为:
content = content.gsub("/test/#{filename}", test.url)
但是,如何才能在红宝石实现它时,文件名可以是任何东西(随机没有在这种情况下)?
在这里使用正则表达式的最好的选择?
你总是可以像对待一个数组组件的值:
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'
。