- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
function paramEncode(str){
var text = escape(str);
while(text.indexOf("%u") !=-1)
text = text.replace("%u","!u");
while(text.indexOf("%") !=-1)
text = text.replace("%","!u00");
while(text.indexOf(".") !=-1)
text = text.replace(".","!u002E");
while(text.indexOf("/") !=-1)
text = text.replace("/","!u002F");
return text;
}
Lure Of Chaos 18.01.2011 15:05 # 0
moonie 18.01.2011 15:09 # 0
Lure Of Chaos 18.01.2011 15:13 # 0
moonie 18.01.2011 15:17 # 0
Lure Of Chaos 18.01.2011 15:20 # 0
moonie 18.01.2011 15:21 # 0
Lure Of Chaos 18.01.2011 15:22 # 0
не был уверен, сколькикратное замещение делает. А потом почитал таки справочник ))
dwinner 18.01.2011 15:09 # 0
New_Folder 18.01.2011 15:17 # 0
Поэтому или регекспом, или while
Lure Of Chaos 18.01.2011 15:20 # 0
New_Folder 18.01.2011 15:24 # 0
text.replace(a/g,'A'));
и
while(text.indexOf('a')!=-1) text.replace('a','A');
да пока руки не доходят
moonie 18.01.2011 15:25 # 0
Lure Of Chaos 18.01.2011 15:26 # 0
это дело 5-10 мин )
New_Folder 18.01.2011 15:28 # 0
Сам обычно реплейсаю через регекспы:)
moonie 18.01.2011 15:40 # 0
New_Folder 18.01.2011 15:46 # 0
text = text.replace('a','A')
Lure Of Chaos 18.01.2011 15:41 # +1
на последнем файрфоксе под хрюшей дал
moonie 18.01.2011 15:43 # 0
Lure Of Chaos 18.01.2011 15:48 # 0
New_Folder 18.01.2011 15:44 # 0
for(var i=0;i<cnt;i++) {
text = text.replace(/a/g,'A');
}
Хотя и без присваивания разница заметна невооруженным глазом
Lure Of Chaos 18.01.2011 15:46 # 0
мы заменяем одной инструкцией, но текст остается исходным для второго теста
во втором же присвоение нужно, потому что в цикле
New_Folder 18.01.2011 15:49 # 0
Поэтому чтобы увидеть результат, то надо переприсвоить.
при
var text='aaaaaaaa';
text.replace(/a/g,'A') ;
text будет равен 'aaaaaaaa'
Lure Of Chaos 18.01.2011 15:53 # 0
text будет равен 'АААААААА', а потом тогда второй тест сфейлит, ему нечего будет заменять. Либо перед вторым тестом тоже написать var text='aaaaaaaa';
New_Folder 18.01.2011 16:09 # 0
"текст остается исходным для второго теста"
Тогда во втором тесте замена внутри while у тебя отработает только 1 раз.
Значит, подсчитанное время будет неверным.
"Либо перед вторым тестом тоже написать var text='aaaaaaaa';" - внутри цикла по i
Lure Of Chaos 18.01.2011 16:44 # +3
New_Folder 18.01.2011 16:50 # 0
Теперь видно, что не так все хорошо с while, как казалось сразу.
gegMOPO4 18.01.2011 17:16 # 0
Lure Of Chaos 18.01.2011 19:20 # 0
bugmenot 18.01.2011 19:22 # +5
Lure Of Chaos 18.01.2011 19:25 # +1
guest 18.01.2011 22:47 # 0
gegMOPO4 19.01.2011 11:27 # 0
babaika 18.01.2011 17:40 # 0
Опера пишет, что это немного медленнее, чем регулярка, но в 2 раза быстрее while.
Я так думаю, что на большом тексте разница будет намного заметнее. ГК защитан.
Lure Of Chaos 18.01.2011 19:15 # 0
qixKopY 25.08.2021 09:32 # 0