@tantumus21

Как правильно обрезать уродливые строки?

Парсю (или паршу??) страницу, с которой хочу стянуть список музыкальных альбомов. Проблема в том, что названия альбомов заносятся в список в виде совершенно уродских строк. Примерно таких:
'The Marshall Mathers LP 2'
'Bangerz\t\t\t\t\t\t\t\n\t\t\t\t\tDeluxe Version\t\t\t\t\t(!)\n\t\t\t\t\n\t\t\t\t\t' │
'Purpose\t\t\t\t\tDeluxe \t\t\t\t\t(!)\n\t\t\t\t\n\t\t\t\t\t'

"Окей" - подумал я. И начал кромсать строки.
title = title.slice(0, title.indexOf('\t'))
По сути, мне нужны только названия альбомов, а делюкс версия это или нет - мне не важно. Поэтому кромсал до первого встречающегося знака табуляции. В итоге получил такое:
The Marshall Mathers LP
Bangerz
Purpose

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

P.S. немного ошибся с приведенными примерами. Подправил!
  • Вопрос задан
  • 121 просмотр
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
str.replace(/\t.*/s, '')
// или
str.match(/^[^\t]*/)[0]
// или
str.slice(0, str.search(/\t|$/))
// или
str.split('\t', 1).pop()
// или
[...str].reduceRight((acc, n) => n === '\t' ? '' : n + acc, '')
Ответ написан
z80b
@z80b
Frontend
Попробуйте так:
let [title] = title.match(/^[^\t|^\n]+/);
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
[title] = title.split('\t');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Так работает String.slice(), с учетом того, что indexOf() возвращает -1, если подстрока не найдена.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы