Обрезание строки (trim)

Под “обрезанием” строки подразумевается удаление пробелов, табов, переходов на новую строку и других “пустых” символов в начале и конце строки. Поскольку 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() и результаты тестов на производительность можно найти здесь. О проблеме кроссбраузерности читайте здесь.

Maklay.com - Большой каталог товаров для спорта и активного отдыха
  • Яков

    Спасибо, очень помогло

  • http://www.jstoolbox.com/2009/11/01/funkciya-trim/ JSToolbox – все о JavaScript » Blog Archive » Функция trim в JavaScript

    [...] Один из таких способов опубликован в моей базе знания, в котором используется довольно таки простое [...]

  • Aram

    Вот еще одна версия.

    function trim (str) {
    var str2=”";
    for (var i = 0; i<str.length;i++) {
    if(str.charAt(i)!=" ")
    str2+=str.charAt(i);
    }

    return str2;
    }

  • http://www.axeld.ru Алексей

    Работает эфективно, самому лень писать, да и время отнимает, a от суда взял и порядок!

JSToolbox создан на основе WordPress