如何获得介于两者之间的随机数的路径?

时间:2019-02-05 02:43:58

标签: ruby-on-rails regex ruby

我有一些路径为

的文件内容
/uploads/test/12/1234.jpg

如何用某种东西替换所有这样的结构,以便可以找到这些结构并将其替换?

例如:/ uploads / test / [random no] / [random no] .jpg转换为“ test”

在知道文件名时对此进行了尝试:

content = content.gsub("/test/#{filename}", test.url)

但是当文件名可以是任何东西时(在这种情况下为随机数),如何在ruby中实现呢?

在这里使用正则表达式最好吗?

1 个答案:

答案 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'