В JavaScript удаляем все после символа в строке: пример с URL

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам нужно быстро найти ответ, вот что может пригодиться: примените метод .split(), указав в качестве разделителя нужный символ, а затем используйте .shift(), чтобы сохранить только первую часть строки:

JS
Скопировать код
const str = "оставь-это|убери-это";
const result = str.split('|').shift();
console.log(result); // "оставь-это"

Здесь символ '|' объявлен в качестве разделителя, который отделяет нужную часть строки от её остальной части.

Кинга Идем в IT: пошаговый план для смены профессии

Обработка разнообразных строк

Строки могут быть разные, и если разделитель отсутствует, функция indexOf() может пригодиться:

JS
Скопировать код
const url = (s) => s.includes('?') ? s.substring(0, s.indexOf('?')) : s;
console.log(url("http://example.com?param=value")); // "http://example.com"
console.log(url("http://example.com")); // "http://example.com"

Как видите, мы успешно справляемся с URL в любых ситуациях.

Любители регулярных выражений могут использовать следующий подход с применением функции replace():

JS
Скопировать код
const str = "http://example.com?param=value";
const base = str.replace(/[\?#].*$/, '');
console.log(base); // "http://example.com"

Регулярные выражения позволяют нам расширить наши возможности, и в этом примере символы '?' и '#' служат маркерами для поиска.

Продвинутые техники и подводные камни

Нюансы обработки URL-адресов

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

JS
Скопировать код
const fullURL = "http://example.com?param=value#anchor";
const base = fullURL.split(/[?#]/)[0];
console.log(base); // "http://example.com"

Таким образом, мы успешно справились с обработкой нескольких разделителей. Проверили ли вы свой навык работы с регулярными выражениями?

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Сохранение пути, удаление запроса

Что делать, если вам нужен только путь URL без строки запроса? Выборочно убираем не нужную часть:

JS
Скопировать код
const pathWithQuery = "http://example.com/path?query=123";
const pathOnly = pathWithQuery.substring(0, pathWithQuery.indexOf('?'));
console.log(pathOnly); // "http://example.com/path"

Таким образом, мы сохраняем нужную часть и убираем избыточную.

Замена при неизвестной информации после разделителя

Если неизвестно, что идёт после разделителя, используйте $' в функции replace() для пропуска этой части:

JS
Скопировать код
const replaceQuery = (url) => url.replace(/\?.*$/, '');
console.log(replaceQuery("http://example.com/path?query=123")); // "http://example.com/path"

После применения замены содержимое, идущее после вопросительного знака, исчезает.

Визуализация

Представьте строку как поезд (🚂), где каждый вагон — это символ:

Markdown
Скопировать код
Поезд: 🚂[А][Б][В][,][Г][Д][Е]

Запятая — это сигнал для остановки:

Markdown
Скопировать код
Стоп-сигнал: ","

Останавливаем поезд и отсекаем все, что идёт после запятой:

JS
Скопировать код
string.split(",")[0]; // Останавливаем поезд

Таким образом, поезд теперь выглядит так:

Markdown
Скопировать код
До: 🚂[А][Б][В][,][Г][Д][Е]
После: 🚂[А][Б][В]

В результате у нас остаётся только нужная часть строки.

Проверка предположений: безопасность превыше всего

Для точности рекомендуется проверять ваш код на различных типах строк:

  1. С разными разделителями: "сохрани|сохрани|убери".
  2. Без разделителя: "сохрани это все".
  3. Крайние случаи, например, пустые строки или строки с разделителем в конце: "", "сохрани это|".

Теперь вы готовы ко всем возможным ситуациям.

Избегание распространенных ошибок начинающих разработчиков

Предположение о наличии разделителя во всех случаях

Отсутствие разделителя может полностью испортить работу функции — будьте внимательны!

Неправильный ввод данных

Проверяйте свои функции на аномальных и краевых данных, чтобы обеспечить их стабильность.

Злоупотребление усложнения кода

Выбирайте самый простой и эффективный способ решения проблемы — не усложняйте код без необходимости.

Полезные материалы

  1. String.prototype.indexOf() – JavaScript | MDN — Незаменимый источник информации о методе indexOf().
  2. String.prototype.slice() – JavaScript | MDN — Всё, что вам нужно знать о методе slice().
  3. String.prototype.split() – JavaScript | MDN — Подробное руководство по разделению строки.
  4. String.prototype.substring() – JavaScript | MDN — Полное руководство по методу substring().
  5. Инструмент для тестирования регулярных выражений – Regex101 — Проверьте ваши регулярные выражения на удобной платформе.
  6. Руководство по методу replace() строки JavaScript — Улучшите свои знания с помощью этого руководства по методу replace().
  7. Регулярные выражения :: Eloquent JavaScript — Место, где настоящие гении создают магию с помощью регулярных выражений!
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод используется для разделения строки по символу?
1 / 5