Под “обрезанием” строки подразумевается удаление пробелов, табов, переходов на новую строку и других “пустых” символов в начале и конце строки. Поскольку JavaScript, в отличие от других языков, не содержит функцию trim(), то её приходится создавать самостоятельно. Одним из самых распространенных вариантов реализации этой функции является следующий:
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
Здесь задача удаления пробелов решается при помощи регулярных выражений. Однако такой вариант отлично работает только с короткими строками. Если же обрезаемая строка имеет большой размер, то производительность такой функции будет невысока, потому что интерпретатору придется анализировать всю строку целиком (хотя это вовсе и не нужно), для того чтобы удалить её концовку. Гораздо более производительной будет следующая функция:
function trim (str) {
str = str.replace(/^\s+/, '');
for (var i = str.length; --i >= 0;) {
if (/\S/.test(str.charAt(i))) {
str = str.substring(0, i + 1);
break;
}
}
return str;
}
В этой функции при помощи регулярных выражений удаляется лишь пробелы в начале строки, пробелы в конце удаляются в цикле for.
Посмотреть другие варианты реализации функции trim() и результаты тестов на производительность можно найти здесь. О проблеме кроссбраузерности читайте здесь.
