JavaScript: trim()
как именно функция trim() удаляет пробелы в начале и конце строки
Как удалить пробелы в начала или в конце строки? Для JavaScript такой проблемы не существует - все очень просто: чтобы избавиться от пробельных символов в начале строки есть функция trimStart(), в конце строки - trimEnd(), а для удаления пробелов как в начале, так и в конце строки - trim().
const string = " hi ";
string.trimStart(); // "hi "
string.trimEnd(); // " hi"
string.trim(); // "hi"
Содержание
Возвращаемое значение
Все перечисленные выше методы удаления пробельных символов возвращают новую строку. Таким образом, исходная строка остается неизменной.
Например:
const string = " hi ";
string.trimStart(); // "hi "
string.trimEnd(); // " hi"
string.trim(); // "hi"
console.log(string); // " hi "
Пробельные символы
Итак, trim() и другие методы этой группы удаляют пробельные символы. Что же к ним относится?
Это:
- пробел,
- знак табуляции,
- неразрывный пробел,
- символы разрыва строки.
Символы разрыва строки
Возможно Вы удивитесь, но символы разрыва строки относятся к пробельным символам. Разберем на примере:
'hi \n'.trim(); // "hi"
'hi \t'.trim(); // "hi"
'hi \r'.trim(); // "hi"
Многострочные конструкции
В JavaScript можно встретить многострочные конструкции - шаблонные литералы. Хорошей новостью будет то, что метод trim() будет корректно работать и с ними.
const multiLine = `
hi
`;
multiline.trim(); // "hi"
Словосочетания
Следует помнить, что метод trim() работает только с пробелами в начале и в конце строки и не удаляет пробелы между словами.
Словосочетания, как строчные литералы
Здесь работают те же правила, что и для шаблонных литералов, содержащих только одно слово. С помощью trim() можно удалить только пробельные символы перед первым словом и после последнего слова конструкции.
const multiLine = `
hi
there
`;
multiLine.trim();
/*
вернет:
"hi
there"
*/
Псевдонимы
trimStart и trimLeft
trimStart() удаляет все пробельные символы от начала строки до первого непробельного символа.
До сих пор некоторые разработчики используют метод trimLeft(). Это псевдоним. Результаты полностью идентичны.
const string = " hi ";
trimEnd(string); // "hi ";
trimRight(string); // "hi ";
trimEnd и trimRight
trimEnd() удаляет пробелы в конце строки. Для него псевдоним - trimRigth().
const string = " hi ";
trimEnd(string); // " hi";
trimRight(string); // " hi";
Какой синтаксис лучше?
Согласно спецификации ECMAScript, методы trimStart и trimEnd являются предпочтительными и рекомендуемыми. Синтаксис trimLeft и trimRight сохранен для обеспечения совместимости со старым кодом.
Таким образом, в этом противостоянии побеждают trimStart и trimEnd.
Почему появились псевдонимы?
Методы trimLeft и trimRight появились первыми. Однако, в дальнешем было принято решение использовать синтаксис trimStart и trimEnd, в связи с тем, что такое написание сходно с названиями других встроенных методов, например: padStart и padEnd. Такой подход позволяет сделать конструкции языка JavaScript более понятными и однородными.
Для сохранения совместимости с уже написанным ранее кодом методы trimLeft и trimRight были сохранены, как псевдонимы, позволяя использовать устаревший синтаксис в старых проектах.
Применение
trim
Обычно все пользуются методом trim(), например, для удаления лишних пробелов значений полей ввода.
<input type="text" id="search">
const inputValue = document.getElementById('search').value.trim();
trimStart
Метод trimStart() может пригодиться при работе со строками документа в разметке markdown, когда нужно удалить только пробельные символы в начале строки, не затрагивая пробелы и символы разрыва в конце строки.
- List Item
- Sub List Item
- Sub List Item
trimEnd
В отношении метода trimEnd() нет каких-то выдающихся мыслей, но возможно он пригодится для удаления символов разрыва строки.
Браузеры
Методы удаления пробельных символов trimStart и trimEnd поддерживаются последними версиями всех пополуярных браузеров, кроме Internet Explorer.
Альтернатива
Вместо метода trim можно использовать регулярное выражение:
const string = ' hi ';
string.replace(/ /g, ''); // "hi"
Спасибо за внимание.
Написано по материалам статьи Samantha Ming “JavaScript String trim()”.
