Javascript.RU

PHP-функция: str_split

Javascript:

function str_split ( f_string, f_split_length, f_backwards ){	// Convert a string to an array
	// 
	// +	 original by: Martijn Wieringa

	if(f_backwards == undefined) {
		f_backwards = false;
	}

	if(f_split_length > 0){
		var result = new Array();

		if(f_backwards) {
			var r = (f_string.length % f_split_length);

			if(r > 0){
				result[result.length] = f_string.substring(0, r);
				f_string = f_string.substring(r);
			}
		}

		while(f_string.length > f_split_length) {
			result[result.length] = f_string.substring(0, f_split_length);
			f_string = f_string.substring(f_split_length);
		}

		result[result.length] = f_string;
		return result;
	}

	return false;
}

Примеры:

str_split('Hello Friend', 3);
['Hel', 'lo ', 'Fri', 'end']


Автор: Mikle, дата: 21 ноября, 2010 - 02:55
#permalink
/* упрощённый вариант */
function str_split ( str, len ) {
			
	str = str.split('');
	if ( !len ) { return str; }

	var r = [];
	for( var k=0;k<(str.length/len); k++ ) {
		r[k] = '';
	}
	for( var k in str ) {
		r[ Math.floor(k/len) ] += str[k];
	}
return r;
};

Автор: B@rmaley.e><e, дата: 21 ноября, 2010 - 12:08
#permalink
var k in str

Не надо так делать. В перечисление попадут лишние свойства.


Автор: Mikle, дата: 22 ноября, 2010 - 03:29
#permalink

[String str]
str = str.split('');
...var k in str
--
Подскажите, какие лишние свойства могут попасть?


Автор: B@rmaley.e><e, дата: 22 ноября, 2010 - 15:57
#permalink

Например, при расширении прототипа.

Array.prototype.uselessMethod = function(){
  return true;
};
/* ... */
var str = 'test',
   data = str.split(''), key, keys = [];
for(key in data) keys.push(key);
alert(keys.join('\n'))

Автор: Гость (не зарегистрирован), дата: 31 октября, 2011 - 10:33
#permalink
function str_split ( str, len ) {
			
	str = str.split('');
	if ( !len ) return str;

	var r = [], k;

	for( k=0;k<(str.length/len); k++ ) r[k] = '';

	for( k=0; k<str.length; k++ ) r[ Math.floor(k/len) ] += str[k];
	
return r;
}

Автор: Гость (не зарегистрирован), дата: 29 октября, 2012 - 14:39
#permalink

Мои 5 копеек.
Акцентировал внимание на читабельности и простоте. Так же сделал, чтобы функция при любых аргументах возвращала массив (для моих целей так удобнее)

function str_split(value, chunkSize) {
  if (value.length === 0)
    return [];
  else if (chunkSize <= 0)
    return [value];

  var result = [];
  var startIndex = 0, i = -1, loops = Math.ceil(value.length / chunkSize);
  while (++i < loops) {
    result.push(value.slice(startIndex, startIndex + chunkSize));
    startIndex += chunkSize;
  }
  return result;
}

alert(str_split('Hello Friend', 3));

Автор: isinkin (не зарегистрирован), дата: 23 декабря, 2017 - 09:27
#permalink
function str_split(f_string, f_split_length) {
    return f_string.match(new RegExp("[^]{" + parseInt(f_split_length || "1", 10) + "}", "g"));
}

Мда...


Автор: Гость (не зарегистрирован), дата: 12 апреля, 2022 - 17:41
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 01:30
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 12:44
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 14:42
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 14 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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