Обрезка строк — одна из самых распространенных задач, с которыми сталкиваются программисты. Функции обрезки удаляют пробелы в начале и / или конце строки. Собственная поддержка обрезки была введена в 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"
Выводы
Функция обрезки полезна для удаления лишних пробелов, набранных пользователями. Часто пользователи даже не знают, что они вводят дополнительные пробелы. Этот факт также может привести к проблемам при входе в систему, если, например, пользователь зарегистрировался в конце пробела. Однако это не единственный вариант использования для обрезки. Используя расширенные версии функций обрезки, представленные в этой статье, вы также сможете решать более широкий круг задач, чем могут решить нативные.