Javascript.RU

PHP-функция: explode

Javascript:

function explode( delimiter, string ) {	// Split a string by string
	// 
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: kenneth
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

	var emptyArray = { 0: '' };

	if ( arguments.length != 2
		|| typeof arguments[0] == 'undefined'
		|| typeof arguments[1] == 'undefined' )
	{
		return null;
	}

	if ( delimiter === ''
		|| delimiter === false
		|| delimiter === null )
	{
		return false;
	}

	if ( typeof delimiter == 'function'
		|| typeof delimiter == 'object'
		|| typeof string == 'function'
		|| typeof string == 'object' )
	{
		return emptyArray;
	}

	if ( delimiter === true ) {
		delimiter = '1';
	}

	return string.toString().split ( delimiter.toString() );
}

Примеры:

explode(' ', 'Kevin van Zonneveld');
{0: 'Kevin', 1: 'van', 2: 'Zonneveld'}


Автор: vasa_c, дата: 24 июня, 2008 - 12:19
#permalink

Какой смысл во всех этих бесчисленных проверках?


Автор: Илья Кантор, дата: 3 июля, 2008 - 15:20
#permalink

Насколько я понял, автор постарался сделать поведение функции максимально идентичным php...

Обычно достаточно просто split:

var str = "a,b,c"
str.split(',') // => массив ["a","b","c"]

Автор: alex33, дата: 4 ноября, 2013 - 07:49
#permalink

Обычно достаточно просто split

Согласен.


Автор: Алексей Качаев (не зарегистрирован), дата: 10 декабря, 2008 - 19:32
#permalink

Все эти проверки здесь нужны для того, чтобы в случае некорректного ввода аргументов функция отдавала те же результаты, какие отдает в PHP.


Автор: SviMik (не зарегистрирован), дата: 11 июля, 2011 - 17:56
#permalink

Вы $limit забыли.

array explode ( string $delimiter , string $string [, int $limit ] )

Автор: andrey12323 (не зарегистрирован), дата: 15 марта, 2012 - 11:47
#permalink

Хорошо ты подшутил с limit :-D


Автор: Александриус (не зарегистрирован), дата: 30 мая, 2012 - 18:23
#permalink

С чего ты взял что насчет limit это шутка???


Автор: Гость (не зарегистрирован), дата: 1 октября, 2013 - 18:56
#permalink

Я конечно понимаю, что канонически кошерно создавать аналоги функций и не пользоваться ОО возможностями языков, но кто отменял простое:

var a = "word,of,split";

a.split(",");

Автор: f0ma (не зарегистрирован), дата: 9 июня, 2014 - 13:40
#permalink

вот правильная версия, полностью аналогична пыховой:
function explode(d, s, l)
{
    var out=[], tmp, pos;
    if (l)
    {
        tmp = s;
        pos = s.indexOf(d)
        while(l-1 && pos>=0)
        {
            out.push(tmp.substr(0, pos));
            tmp = tmp.substr(pos+d.length);
            l--;
            pos = tmp.indexOf(d);
        }
        out.push(tmp);
    }
    else
        out = s.split(d);
    return out;
}


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

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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