Javascript.RU

PHP-функция: trim

Пермалинк: http://javascript.ru/php/trim

Javascript:

function trim ( str, charlist ) {
    // Strip whitespace (or other characters) from the beginning and end of a string
    // +   original by: Ilia Kantor (http://javascript.ru)

    charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

Примеры:

ltrim('    Kevin van Zonneveld    ');
'Kevin van Zonneveld'


Автор: Phobos (не зарегистрирован), дата: 2 марта, 2009 - 23:36
#permalink

Спасибо за функции! Обалденный сайт!

Однако в этом примере возможно где-то ошибка.
Я использую код этой функции для проверки вводимой в поле информации при регистрации пользователя (email и прочие, т.к. часто пользователи по ошибке могут ввести пробел, а потом долго маятся - что не так).

Так вот ошибка в следующем: если значение (value) в поле input начинается или заканчивается на букву "s" (именно маленькую), то она обрезается.

Например, если записать "sPhobos" в поле, то после применения описанной выше функции получится "Phobo".

Пока заметил только это.

Подскажите пожалуйста, как это лечить??? Я не очень разбираюсь в регулярных выражениях, но явно где-то там проблема.


Автор: Phobos (не зарегистрирован), дата: 2 марта, 2009 - 23:53
#permalink

Странно. Прочитал про символ \s в рег. выражениях. Поидее это и есть пробел.

\s
Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed.
Эквивалентно [ \f\n\r\t\v].

Однако, удалив его проблема исчезла.

В моём случае хватило исправить строку

= !charlist ? ' \s\xA0'

на

= !charlist ? ' \xA0'

тоесть осталось знак пробела, как таковой, и символ hex \xA0 ( честно, не в курсе какой это именно )) . Вроди от кодировки зависит. может тоже лучше убрать.)

Однако не знаю, на сколько я прав в своих действиях...


Автор: ArtemkA[DeveloP.Pro] (не зарегистрирован), дата: 26 октября, 2009 - 13:13
#permalink

Проблема с вырезанием символа s решается очень просто. Нужно изменить ' \s\xA0' на ' \\s\\xA0'


Автор: stopkran, дата: 23 декабря, 2009 - 13:15
#permalink

Очень сложно. Из-за этого даже ошибки (внутри кавычек надо экранировать слэши, как подсказал ArtemkA). Всё-таки trim чаще всего нужен именно как trim (без charlist):

str = str.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");

за \xa0 отдельное спасибо, сам бы заранее не догадался.


Автор: EugenyK, дата: 8 апреля, 2010 - 20:23
#permalink

Есть ещё несколько реализаций php-функции trim, которые в зависимости от длины строки и кол-ва используемых символов, сильно разнятся по времени исполнения. Особенно интересно, что максимально быстро работает функция, не использующая регулярные выражения. Смотреть тут


Автор: failbowl, дата: 8 февраля, 2018 - 16:30
#permalink
trim("worldofchess") // worldofche

Внимание вопрос: где ss ?


Автор: Гость_k (не зарегистрирован), дата: 15 июня, 2019 - 14:17
#permalink

Возможно лучше использовать стандартные методы:
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

var str = "  Hello World  \n", // инициализируем строковую переменную;
var newString = str.trim(); // переменная содержит значение "Hello World"

 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum