{G}eekrainian

Как получить значение после последнего слэша в URL используя JavaScript

4 мин. чтения

Read in English.

Программирование

Существует несколько способов достать значение после последнего слэша "/" в URL используя JavaScript. Ниже представлены несколько вариантов решения.

1. Базовые решения

1.1. Используя split()

const url = "https://geekrainian.com/a/b/c/d";
const parts = url.split("/");
const valueAfterSlash = parts[parts.length - 1];
console.log(valueAfterSlash); // Результат: "d"

1.2. Используя lastIndexOf() и substring()

const url = "https://geekrainian.com/a/b/c/d";
const lastSlashIndex = url.lastIndexOf("/");
const valueAfterLastSlash = url.substring(lastSlashIndex + 1);
console.log(valueAfterLastSlash); // Результат: "d"

1.3. Используя регулярное выражение (RegExp)

const url = "https://geekrainian.com/a/b/c/d";
const regex = /\/([^/]+)$/; // находит последний слеш и захватывает текст после него
const match = url.match(regex);
const valueAfterLastSlash = match ? match[1] : null;
console.log(valueAfterLastSlash); // Результат: "d"

1.4. Используя обьект URL

const url = "https://geekrainian.com/a/b/c/d";
const urlObject = new URL(url);
const valueAfterLastSlash = urlObject.pathname.split("/").pop();
console.log(valueAfterLastSlash); // Результат: "d"

2. Улучшенные решения

Если ваша строка заканчивается на слэш без значения (напр. https://geekrainian.com/a/b/c/d/), нам понадобится немного доработать решения выше, чтобы код отрабатывал в таких случаях корректно.

2.1. Используя split()

const url = "https://geekrainian.com/a/b/c/d/";
const parts = url.split("/");
const lastPart = parts[parts.length - 1];
const valueAfterLastSlash = lastPart === "" ? parts[parts.length - 2] : lastPart;
console.log(valueAfterLastSlash); // Результат: "d"

2.2. Используя lastIndexOf() и substring()

const url = "https://geekrainian.com/a/b/c/d/";
const lastSlashIndex = url.lastIndexOf("/");
const valueAfterLastSlash = lastSlashIndex === url.length - 1 
  ? url.substring(url.lastIndexOf("/", url.length - 2) + 1, url.length - 1) 
  : url.substring(lastSlashIndex + 1);
console.log(valueAfterLastSlash); // Результат: "d"

2.3. Используя регулярное выражение (RegExp)

const url = "https://geekrainian.com/a/b/c/d/";
const regex = /\/([^/]+)\/?$/; // находит последний слеш и захватывает текст после него (игнорируя пустые слэши)
const match = url.match(regex);
const valueAfterLastSlash = match ? match[1] : null;
console.log(valueAfterLastSlash); // Результат: "d"

2.4. Используя обьект URL

const url = "https://geekrainian.com/a/b/c/d/";
const urlObject = new URL(url);
const pathParts = urlObject.pathname.split("/").filter(part => part !== ""); // убираем пустые значения
const valueAfterLastSlash = pathParts[pathParts.length - 1];
console.log(valueAfterLastSlash); // Результат: "d"

Все предоставленные выше решения позволяют корректно достать значение идущее за последним слэшем в строке. Но вас наверняка интересует какой же метод лучше?

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

  • Двойной слэш в строке https://geekrainian.com/a/b/c//
  • Наличие строки запроса https://geekrainian.com/a/b/c/d/?a=b&c=d
  • Наличие фрагмента https://geekrainian.com/a/b/c/d#test

Эта история оказалось полезной? 🤔

Поддержите меня чашечкой кофе и станьте спонсором нового контента!

BuyMeACoffee

Ko-Fi

Поделиться

Похожие публикации

Как Mixcloud начал брать деньги за базовые функции

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

© geekrainian.com

  • Русский
  • English
RSSКарта сайта