Статьи

Обрезка строк в JavaScript

Обрезка строк — одна из самых распространенных задач, с которыми сталкиваются программисты. Функции обрезки удаляют пробелы в начале и / или конце строки. Собственная поддержка обрезки была введена в JavaScript 1.8.1, что означает, что они не были частью Internet Explorer до IE9. Эта статья покажет вам, как обрезать, и как вы можете создать более гибкие и мощные функции обрезки.

JavaScript предоставляет три функции для выполнения различных типов обрезки строк. Первый, trimLeft() Второй, trimRight() Последняя функция, trim() Как и многие другие языки, собственные функции JavaScript удаляют только пробельные символы. И наоборот, функции PHP могут удалять произвольные символы. Эта статья познакомит вас с PHP-подобными функциями обрезки.

trimLeft()

Давайте посмотрим, как работает native trimLeft()

 var string = "  Hello world";
console.debug(string.trimLeft());
// prints "Hello world"

Обратите внимание, что пробелы в начале строки удаляются. Мы можем улучшить эту функцию, указав список символов для удаления. Расширенная версия показана ниже.

 String.prototype.trimLeft = function(charlist) {
  if (charlist === undefined)
    charlist = "\s";

  return this.replace(new RegExp("^[" + charlist + "]+"), "");
};

Ключевыми точками этой функции являются объект RegExp^ RegExp В регулярных выражениях символ ^ Обратите внимание, что список вводимых символов чувствителен к регистру.

В следующем примере показано, как trimLeft() Это поведение аналогично поведению эквивалентной нативной функции.

 var string = "  Hello world";
console.debug(string.trimLeft());
// prints "Hello world"

Следующие примеры показывают, как вы можете удалить заданный набор символов из начала строки. Первый пример обрезает строчные буквы «o», «e» и «l» и прописные буквы «H». Второй пример обрезает строчную букву «h». Поскольку строка начинается с заглавной буквы «H», обрезка не происходит.

 var string = "Hello world";
console.debug(string.trimLeft("Hoel"));
// prints " world"

string = "Hi mate!";
console.debug(string.trimLeft("h"));
// prints "Hi mate!"

trimRight()

Расширенная trimRight() Новая trimRight()

 String.prototype.trimRight = function(charlist) {
  if (charlist === undefined)
    charlist = "\s";

  return this.replace(new RegExp("[" + charlist + "]+$"), "");
};

Функция очень похожа на предыдущую. Единственное отличие — это шаблон регулярного выражения. Вместо того, чтобы использовать символ ^$

Следующие примеры показывают, как использовать trimRight() Первый очень прост и похож на предыдущие. Второй, довольно интересный, потому что он использует не просто список символов, а класс символов POSIX . Классы символов представляют собой сокращенную запись для указания наборов символов. В примере используется W W

 var string = "Hello world";
console.debug(string.trimRight("odl"));
// prints "Hello wor"

string = "Hi mate!";
console.debug(string.trimRight("\W"));
// prints "Hi mate"

trim()

Последняя функция очень проста и основана на двух предыдущих. Обрезает как в начале, так и в конце строки. Его реализация также проста, потому что она состоит из вызова trimLeft()trimRight()

 String.prototype.trim = function(charlist) {
  return this.trimLeft(charlist).trimRight(charlist);
};

Некоторые примеры использования trim()

 var string = "he loves she";
console.debug(string.trim("hes "));
// prints "lov"

string = "   I write for JSPro.com   ";
console.debug(string.trim());
// prints "I write for JSPro.com"

Выводы

Функция обрезки полезна для удаления лишних пробелов, набранных пользователями. Часто пользователи даже не знают, что они вводят дополнительные пробелы. Этот факт также может привести к проблемам при входе в систему, если, например, пользователь зарегистрировался в конце пробела. Однако это не единственный вариант использования для обрезки. Используя расширенные версии функций обрезки, представленные в этой статье, вы также сможете решать более широкий круг задач, чем могут решить нативные.