我怎样才能在两者之间一些随机数路径?

问题描述 投票:-2回答:1

我有一些文件的内容与路径

/uploads/test/12/1234.jpg

我怎么能代替所有这些结构的东西,这样我可以找到那些结构和GSUB呢?

如:/上传/测试/ [随机没有] / [随机无]的.jpg到 '测试'

尝试过这种当文件名被称为:

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

但是,如何才能在红宝石实现它时,文件名可以是任何东西(随机没有在这种情况下)?

在这里使用正则表达式的最好的选择?

ruby-on-rails regex ruby
1个回答
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'

© www.soinside.com 2019 - 2024. All rights reserved.