Как я могу получить путь с некоторым случайным числом между ними? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть некоторое содержимое файла с путем как

/uploads/test/12/1234.jpg

Как я могу заменить всю такую ​​структуру чем-то таким, что я могу найти эту структуру и добавить ее?

Например: / uploads/ test / [random no] / [random no] .jpg для 'test'

Попробовал это, когда имя файла было известно:

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

Но как мы можем добиться этого в ruby, когдаимя файла может быть любым (случайное нет в данном случае)?

Используете ли вы здесь лучшую ставку регулярного выражения?

1 Ответ

0 голосов
/ 05 февраля 2019

Вы всегда можете рассматривать значения как компоненты в массиве:

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'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...