У меня есть URL-адрес таких изображений:

https://firebasestorage.googleapis.com/v0/b/my-project/o/attachments%2F1610905935653_gatto.jpg?alt=media&token=a89b3cbb-d1cd-4310-b2f3-23395db50033

Этот URL-адрес содержит название изображения, в данном случае это: gatto.jpg .

Что может быть умным способом извлечь имя из строки, подобной предыдущей, представляющей мой URL.

Рассмотрим случай, когда этот URL определен в строке с именем url .

let url = "https://firebasestorage.googleapis.com/v0/b/my-project/o/attachments%2F1610905935653_gatto.jpg?alt=media&token=a89b3cbb-d1cd-4310-b2f3-23395db50033"

Поэтому мне нужно извлечь то, что стоит после символа _ , а что до символа ? .

Что может быть разумным решением для достижения этой задачи?

-1
AndreaNobili 18 Янв 2021 в 20:57

2 ответа

Лучший ответ

Поскольку я не слишком знаком с RegEx, я бы просто разделил строку дважды, поскольку у вас есть только один "_" и один "?" В вашем URL-адресе я бы сначала разделил URL-адрес на основе "?" а затем возьмите первый элемент и снова разделите его на основе "_"

var url = "https://firebasestorage.googleapis.com/v0/b/my-project/o/attachments%2F1610905935653_gatto.jpg?alt=media&token=a89b3cbb-d1cd-4310-b2f3-23395db50033";
var filename = url.split("?")[0].split("_")[1];

Конечно, вы всегда можете найти RegEx для этого.

2
Da Mahdi03 18 Янв 2021 в 18:02

Вы можете просто использовать URL, чтобы проанализировать путь и разделите его, чтобы получить имя файла:

let url = "https://firebasestorage.googleapis.com/v0/b/my-project/o/attachments%2F1610905935653_gatto.jpg?alt=media&token=a89b3cbb-d1cd-4310-b2f3-23395db50033";

url = decodeURIComponent(url);
const fileName = new URL(url).pathname.split("/").pop().split("_").pop();

//Use fileName as required
console.log(fileName);
1
Kunal Kukreja 18 Янв 2021 в 18:07