Просмотр полной версии : Не получается replace()
ShockWave1024
07.08.2007, 16:16
private function RemoveText(s:String):void {
text.replace(s, "");
}
в мануале написано что - s может быть регулярным или строковым выражением, но не работает ...
подскажите кто знает ...
(можно ли вставить переменную в регулярное выражение???)
0. Почему имя функции похоже на имя класса?
1. Что такое text?
ShockWave1024
07.08.2007, 16:58
упс, простите
private function removeText(s:String):void {
var text:String = new String("Hello world!!!");
text.replace(s, "");
}
function removeText(s:String):void {
var text:String = new String("Hello world!!!");
var replacedText:String=text.replace(s, "");
trace(replacedText);
}
removeText("ll");//Heo world!!!
А зачем создавать целый объект для данных простого типа вроде String?
А зачем создавать целый объект для данных простого типа вроде String?
В данном случае это по барабану ) что сторока как ты ее не создавай всеравно это объект типа строка
Нет, не по барабану:
function test():void {
var a:String = "a";
var b:String = new String("b");
}
На выходе:
package classes_fla {
import flash.display.MovieClip;
public dynamic class MainTimeline extends MovieClip {
public function MainTimeline() {
// D0 30 D0 49 00 5D 07 24 00 60 04 4F 07 02 47
this.super();
addFrameScript(0, frame1);
}
internal function frame1():* {
// D0 30 47
}
public function test():void {
// D0 30 20 85 D5 20 85 D6 2C 0A D5 5D 06 2C 0C 4A 06 01 85 D6 47
var _local1:String = null;
var _local2:String = null;
_local1 = "a";
_local2 = new String("b");
}
}
}
P-Code:
0:GETLOCAL_0
1:PUSHSCOPE
2:PUSHNULL
3:COERCE_S
4:SETLOCAL_1
5:PUSHNULL
6:COERCE_S
7:SETLOCAL_2
8:PUSHSTRING "a"
10:SETLOCAL_1
11:FINDPROPSTRICT
13:PUSHSTRING "b"
15:CONSTRUCTPROP
18:COERCE_S
19:SETLOCAL_2
20:RETURNVOID
Если для инициализации первой переменной нужно:
pushstring "a"
setlocal_1
То для второй уже:
findpropstrict
pushstring "b"
constructprop
coerce_s
setlocal_2
Легко проверить:
var t:uint = getTimer();
for (var i:uint = 0; i< 40000000; i++) {
var a:String = "String";
}
trace(getTimer()-t);// 751
t = getTimer();
for (i = 0; i< 40000000; i++) {
var b:String = new String("String");
}
trace(getTimer()-t);// 4009
Разница в скорости — пять с лишним раз.
уговорил )), но в данном примере это по барабану :D
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.