Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.04.2007, 12:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 21  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Подумаешь.

Код:
str = 'acacacbbbbddddacacacac';
trim = function (str, symbols) {
	symbols = symbols.length ? symbols : ' ';
	while (str.indexOf(symbols) == 0) {
		str = str.substr(symbols.length);
	}
	while (str.lastIndexOf(symbols) == str.length-symbols.length) {
		str = str.substr(0, str.length-symbols.length);
	}
	return str;
};
trim2 = function (str, symbol) {
	if (lastStr != str) {
		lastStr = str;
		symbol = symbol ? symbol : ' ';
		var array:Array = str.split(symbol);
		var sx:Number = 0;
		var ex:Number = array.length;
		while (array[sx] == "") {
			sx++;
		}
		while (array[ex-1] == "") {
			ex--;
		}
		array.splice(ex);
		array.splice(0, sx);
		str = array.join(symbol);
		outStr = str;
		return str;
	} else {
		return outStr;
	}
};
function trims(str:String, symbol:String):String {
	symbol = symbol.length ? symbol : ' ';
	var array:Array = str.split(symbol);
	var sx:Number = 0;
	var ex:Number = array.length;
	while (array[sx] == "") {
		sx++;
	}
	while (array[ex-1] == "") {
		ex--;
	}
	array.splice(ex);
	array.splice(0, sx);
	str = array.join(symbol);
	return str;
}
////////
t = getTimer();
for (var i = 0; i<10000; i++) {
	trim(str, 'ac');
}
trace(trim(str, 'ac'));
trace(getTimer()-t);
t = getTimer();
for (var i = 0; i<10000; i++) {
	trim2(str, 'ac');
}
trace(trim2(str, 'ac'));
trace(getTimer()-t);
t = getTimer();
for (var i = 0; i<10000; i++) {
	trims(str, 'ac');
}
trace(trims(str, 'ac'));
trace(getTimer()-t);

Старый 19.04.2007, 12:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 22  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Выжал ещё 150 мс:

Код:
str = 'acacacbbbbddddacacacac';
trim = function(str, symbol) {
	symbol = symbol ? symbol : ' ';
	var array = str.split(symbol);
	var sx = 0;
	var ex = array.length;
	while (array[sx] == "") {
		sx++;
	}
	while (array[ex-1] == "") {
		ex--;
	}
	str = array.splice(sx,ex-sx).join(symbol);
	return str;
}
////////
t = getTimer();
for (var i = 0; i<10000; i++) {
	trim(str, 'ac');
}
trace(trim(str, 'ac'));
trace(getTimer()-t); // 831

Старый 19.04.2007, 12:38
OracleN вне форума Посмотреть профиль Отправить личное сообщение для OracleN Найти все сообщения от OracleN
  № 23  
Ответить с цитированием
OracleN
 
Аватар для OracleN

Регистрация: Mar 2007
Адрес: Беларусь, др. Дрычин
Сообщений: 200
Отправить сообщение для OracleN с помощью ICQ
Да клева, тут согласен что в 20 раз быстрее первоначального, хотя мне кажется нужно нормально потестить, бо к примеру если одну комбинацию надо убрать, то тут с массивами не быстрее будет, но надо тестить.

Старый 19.04.2007, 12:46
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 24  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
И ещё 170 мс:

Код:
str = 'acacacbbbbddddacacacac';
trim = function (str, symbol) {
	symbol = symbol ? symbol : ' ';
	var array = str.split(symbol);
	var sstr = array.shift();
	var estr = array.pop();
	while (sstr == "") {
		sstr = array.shift();
	}
	while (estr == "") {
		estr = array.pop();
	}
	var tmp = estr && sstr ? symbol : '';
	if (array.length) {
		tmp = symbol+array.join(symbol)+symbol;
		return sstr+tmp+estr;
	}
	return sstr+tmp+(estr ? estr : '');
};
t = getTimer();
for (var i = 0; i<10000; i++) {
	trim(str, 'ac');
}
trace(trim(str, 'ac'));
trace(getTimer()-t); // 658


Последний раз редактировалось etc; 19.04.2007 в 13:42.
Старый 19.04.2007, 14:02
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 25  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Измерь
Код:
trims = function (str, symbol) {
	symbol = symbol ? symbol : ' ';
	var array = str.split (symbol);
	var sstr = array.shift ();
	var estr = array.pop ();
	while (estr == "") {
		estr = array.pop ();
	}
	while (sstr == "") {
		sstr = array.shift ();
	}
	var tmp = estr && sstr ? symbol : '';
	if (array.length) {
		tmp = symbol + array.join (symbol) + symbol;
		return sstr + tmp + estr;
	}
	return sstr + tmp + (estr ? estr : '');
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.04.2007, 14:06
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 26  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Тогда уж:
Код:
str = 'acacacbbbbddddacacacac';
trim = function (str, symbol) {
	symbol = symbol ? symbol : ' ';
	var array = str.split(symbol);
	var estr = array.pop();
	var sstr = array.shift();
	while (estr == "") {
		estr = array.pop();
	}
	while (sstr == "") {
		sstr = array.shift();
	}
	if (array.length) {
		return sstr+symbol+array.join(symbol)+symbol+estr;
	}
	return (sstr && estr ? sstr+symbol+estr : (estr ? estr : ''));
};
t = getTimer();
for (var i = 0; i<10000; i++) {
	trim(str, 'ac');
}
trace(trim(str, 'ac'));
trace(getTimer()-t); // 580—610


Последний раз редактировалось etc; 19.04.2007 в 14:31.
Старый 19.04.2007, 14:13
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 27  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Если кто-то еще следит, за тем как мы ерундой вдвоем страдаем и кто не понял, что нового в последних двух постах, объясняю: мы поменяли местами pop и shift. То есть сначала убрали символы с конца, а потом сначала и это дало результат
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.04.2007, 14:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 28  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Да, я ещё убрал лишнюю проверку и ещё 20 мс выцепил.

Старый 19.04.2007, 14:36
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 29  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
А кто будет переводы строк вырезать?
Код:
function trim(s:String):String{
if( s==undefined || s=="" ) return "" ;
    var mx:Number, i:Number;
    for ( mx = s.length-1; mx > 0; mx--) if ( s.charCodeAt(mx) > 32) break;
    for (i = 1; i < mx; i++) if (s.charCodeAt(i) > 32) break;
     return s.slice(i, mx+1);
}

trace (">>" + trim( "  \n\taassddfegkl\t\t \n  ")+ "<<");
473 ms ваша проверка показала (на строчке без пробелов)
с пробелами ессно больше


Последний раз редактировалось Kikasso; 19.04.2007 в 14:43.
Старый 19.04.2007, 14:38
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 30  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Этого в условии не было.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.