Удаление завершающего слеша из URL в JavaScript и Python
Быстрый ответ
Если вам нужно избавиться от слеша в конце URL-строки, вы можете воспользоваться методом .replace()
в сочетании с регулярным выражением:
let result = str.replace(/\/$/, "");
Следует учесть, что данное регулярное выражение /\/$/
отыскивает и удаляет слеш на конце строки, будто это нежелательный элемент.
Основные способы работы с различными форматами URL
URL может быть представлен в различном формате, и под каждый из них существует свой способ обработки.
Метод ES6: Использование endsWith
и slice
Для решения задачи в современных браузерах удобно использовать новые возможности ES6:
let cleanUrl = (url) => url.endsWith('/') ? url.slice(0, -1) : url;
Мы проверяем законченность URL слешем с помощью метода endsWith
. В случае положительного ответа метод slice
убирает нежелательный символ.
Традиционный способ: Использование substr
для старых браузеров
Если вам нужно обеспечить поддержку старых браузеров, допустимо использовать метод substr
:
function removeTrailingSlash(url) {
if (typeof url === 'string') {
return url.substr(-1) === '/' ? url.substr(0, url.length – 1) : url;
} else {
throw new Error('Ожидаемый тип — строка, не динозавр 🦖');
}
}
substr
способен обработать строку для старых версий браузеров и вернуть ошибку в случае, если URL-адрес не является строкой.
Для сложных случаев: Особые ситуации
Иногда URL содержат несколько слешей или пробелы перед ними:
url = "https://example.com// ".replace(/\s+$/, '').replace(/\/+$/, "");
Сначала пробелы удаляются регулярным выражением \s+$
, а затем группы слешей уничтожаются с помощью \/+$
.
Удаление слешей в начале и конце строки
Если требуется удалить слеши, находящиеся в начале и в конце строки, можно применить:
let removeLeadTrainSlash = (url) => url.replace(/^\/+|\/+$/g, '')
Такое регулярное выражение без проблем справится с обоими типами слешей одновременно.
Визуализация
Вероятно будет полезно представить URL в виде дверного коврика с торчащей нитью:
Перед входом:
Коврик с ниткой – [🚪🧹🧵]
В результате обработки:
Коврик без ниток – [🚪🧹]
JavaScript в нашем случае выступает как невидимые ножницы, которые аккуратно обрезают лишнее:
let url = "https://example.com/"; // Конец строки с ниткой 🧵
url = url.replace(/\/$/, ""); // ✂️ Теперь коврик опрятен!
Теперь все готово для входа:
До: "https://example.com/" ↗️
После: "https://example.com" ✔️
Конечные слеши больше не создают проблем! 🚫🧵
Построение эффективных решений
Заключительный этап — рассмотрение работы со слешами разного направления.
Регулярные выражения для различных типов слешей
Если требуется обработать случай смешанных слешей:
url = "https://example.com\\\\".replace(/[\\/]+$/, "");
Такое выражение удаляет как прямые, так и обратные слеши.
Цепочка строковых методов для улучшения контроля
Для обеспечения полного контроля над процессом можно производить удаление слешей при помощи цепочки методов:
url = "https://example.com/".split('/').filter(Boolean).join('/');
Данные методы разбивают URL, фильтруют пустые элементы и трансформируют части строки обратно.
Полезные материалы
- String.prototype.replace() – JavaScript | MDN — Детализированная информация о методе replace.
- Tutorial | DigitalOcean — Уровень мастерства в использовании регулярных выражений.
- Truthy and Falsy Values: When All is Not Equal in JavaScript — SitePoint — О понятии истинности и ложности в JavaScript.
- JavaScript String slice() Method — Искусство работы со строками в JavaScript.
- Новые вопросы по 'javascript+string' – Stack Overflow — Обсуждение вопросов и ответов по работе со строками в JavaScript.
- Справочник по регулярным выражениям от DaveChild — Отличный справочник по регулярным выражениям.
- Руководство по регулярным выражениям – Классы символов — Понимание классов символов в регулярных выражениях.