Как я могу вставить текст до расширения файла с JavaScript? - PullRequest
1 голос
/ 05 марта 2020

У меня есть URL-адреса изображений, подобные этому

https://cdn.shopify.com/s/files/1/0919/5078/products/DSC_9782-processed_9bef16cb-7700-48d9-ad6d-f9a350e7f6c7.jpg?v=1579953393

Мне нужно вставить _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 после расширения файла.

Ответы [ 5 ]

2 голосов
/ 05 марта 2020
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);

Надеюсь, это вам поможет.

0 голосов
/ 09 марта 2020

Мне удалось переделать этот ответ , чтобы сделать работу. Это выглядит так и работает как положено.

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');
0 голосов
/ 05 марта 2020

Вы можете использовать это регулярное выражение:

((?:.+\/.+)+\/)(.?.+)+\.(.+)\?(.*)

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
0 голосов
/ 05 марта 2020

Это должно помочь вам. Вам просто нужно добавить каждый тип расширения, который можно использовать в массиве 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)
0 голосов
/ 05 марта 2020

Один из подходов может быть таким, когда вы уверены, что расширение изображения равно .jpg .
Тогда вы можете 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 интерфейса Вы можете достичь этого.

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