Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не получается replace() (http://www.flasher.ru/forum/showthread.php?t=99501)

ShockWave1024 07.08.2007 16:16

Не получается replace()
 
Код:

private function RemoveText(s:String):void {
        text.replace(s, "");
      }

в мануале написано что - s может быть регулярным или строковым выражением, но не работает ...
подскажите кто знает ...
(можно ли вставить переменную в регулярное выражение???)

etc 07.08.2007 16:36

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, "");
}


silin 07.08.2007 17:06

Код:

function removeText(s:String):void {
    var text:String = new String("Hello world!!!");
    var replacedText:String=text.replace(s, "");
        trace(replacedText);
}
removeText("ll");//Heo world!!!


etc 07.08.2007 17:08

А зачем создавать целый объект для данных простого типа вроде String?

__i 07.08.2007 18:30

Цитата:

Сообщение от __etc
А зачем создавать целый объект для данных простого типа вроде String?

В данном случае это по барабану ) что сторока как ты ее не создавай всеравно это объект типа строка

etc 07.08.2007 18:51

Нет, не по барабану:

Код:

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

Разница в скорости — пять с лишним раз.

__i 07.08.2007 20:00

уговорил )), но в данном примере это по барабану :D


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

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