PDA

Просмотр полной версии : Split method


Nob
20.07.2002, 23:40
Всем привет!

Народ, видел ли кто оптимизированный метод split? Уж больно базовый тормозит.

Nob
21.07.2002, 20:23
Hi!

И все молчат... Ужели никто не видел?
Эх, люди... Ну что, ж сами и напишем.

;)

john
23.07.2002, 16:46
Ну не знаю, оптимизация нужна только для пятого плейера,
шестерошный сплит работает лучше любого оптимизированного,

для пятого вот:


//-------------------------------------------------------------------------
// split
//-------------------------------------------------------------------------

String.prototype.OldSplit = String.prototype.split;
//Link to old split function

String.prototype.split = function(str)
{ //Create new split function

if(str.length>1)return this.OldSplit(str);

if (str == "" || str == null) return this.toCharArray();

var result = new Array();
var d = this.length;
var n = 0;
var tmpStr = "";
var ch;

while(n<d)
{
//ch = this.charAt(n++);
ch = substring(this ,++n, 1);
if(ch==str)
{
result.push(tmpStr);
tmpStr="";
}else{
tmpStr += ch;
}
}
result.push(tmpStr);
return result;
}

//-------------------------------------------------------------------------
// convert string to char array
//-------------------------------------------------------------------------

String.prototype.toCharArray = function()
{
var st = this;
var arr_result = new Array();
for (var s=0;s < st.length;s++)
{
arr_result.push(substring(this, s+1, 1));
}
return arr_result;
}

//-------------------------------------------------------------------------
// charAt
//-------------------------------------------------------------------------

String.prototype.charAt = function(index)
{
return(substring(this, index+1, 1));
}

//-------------------------------------------------------------------------
// replace
//-------------------------------------------------------------------------

String.prototype.replace = function()
{
return this.split(arguments[0]).join(arguments[1]);
}

Nob
24.07.2002, 12:30
Мне как раз для 5. Спасибо! То, что надо.
Работает действительно быстрее. Но не будет ли работа с XML еще быстрее, если речь идет о простой 2-х уровневой текстовой структуре?