У меня есть URL-адреса изображений, подобные этому
https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393
Мне нужно вставить _small перед расширением файла, чтобы получить такой размер изображения, и он должен выглядеть следующим образом
_small
https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7_small.jpg?v=1579953393
(Изображения могут иметь разные расширения файлов.)
Какой лучший способ сделать это с JavaScript? Может быть, Regex?
Пробовал использовать это Regex, но он не работает с ?v=1579953393 после расширения файла.
?v=1579953393
let str = "https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393"; let[filename, extension] = str.split('.jpg'); let rename = filename+'_small.'+extension; console.log('New file name',rename);
Надеюсь, это вам поможет.
Мне удалось переделать этот ответ , чтобы сделать работу. Это выглядит так и работает как положено.
image = 'https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393'; image = image.replace(/(\.[\w\d?=_-]+)$/i, '_small$1');
Вы можете использовать это регулярное выражение:
((?:.+\/.+)+\/)(.?.+)+\.(.+)\?(.*)
var url = 'https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393'; url = url.replace(/((?:.+\/.+)+\/)(.?.+)+\.(.+)\?(.*)/,"$1$2_small.$3?$4"); alert(url);
((?:.+\/.+)+\/) : matches text from starting to last slash (/) - protocol,host, and folders (.?.+)+ : filename \. : Specific char . - before file extension (.+) : file extension \? : special character ? - starting of search params (.*) : search params
Затем замените группы следующим образом:
$1$2_small.$3?$4
Это должно помочь вам. Вам просто нужно добавить каждый тип расширения, который можно использовать в массиве fileTypes.
fileTypes
const url = "https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393"; const fileTypes = ['.jpg','.png']; //add each extension that you will use here. const urlType = fileTypes.filter(type => url.search(type)> 0)[0]; let newUrl = urlType ? url.replace(urlType,`_small${urlType}`) : null; console.log(newUrl)
Один из подходов может быть таким, когда вы уверены, что расширение изображения равно .jpg . Тогда вы можете split строку.
split
let str = 'https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393'; let strArr = str.split('.jpg'); console.log(strArr[0]); let newStr = `${strArr[0]}_small`; console.log(newStr); let url = `${newStr}.jpg${strArr[1]}`; console.log(url);
Вечер с использованием URL интерфейса Вы можете достичь этого.
URL