在as3中使用正则表达式有些麻烦

时间:2013-10-27 02:42:03

标签: regex actionscript-3 cpu

我想使用正则表达式从字符串中提取,为什么它不起作用? 从“10:13 * 12,20:23 * 22,60:36 * 432,......”,我想提取10:13 * 12然后20:23 * 22,依此类推。然后,我想从10:13 * 12,10,13和12中提取,并且与20:23 * 22相同。

例如:levelObjs [i] =“10:13 * 12,20:23 * 22,60:36 * 432,......”

    var levelObjExp:RegExp = /(.*?),/ig;  
    var levelObjInfoExp:RegExp = /(\d+):(\d+)*(\d+)/ig;
    for(var i:int = 0; i < levelObjs.length; i++) {
    if(levelObjs[i] != 0){
        var levelObj:Object = levelObjExp.exec(levelObjs[i]);
        while (levelObj != null) {
            trace (levelObj[1]);
            var levelObjInfo:Object = levelObjInfoExp.exec(levelObj[1]);
            if (levelObjInfo != null) {
                var levelObjNum:int = levelObjInfo[1];
                var levelObjX:int = levelObjInfo[2];
                var levelObjY:int = levelObjInfo[3];
                trace(levelObjNum, levelObjX, levelObjY);
            }

            levelObj = levelObjExp.exec(levelObjs[i]);
        }
    }

}

此外,此代码需要在每个帧上,并且它需要简单并尽可能少地使用cpu。正则表达式使用相对较多的CPU使用?如果不使用正则表达式,可能有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

可能错误的RegExp。

修正以下行

var levelObjInfoExp:RegExp = /(\d+):(\d+)*(\d+)/ig;

var levelObjInfoExp:RegExp = /(\d+):(\d+)\*(\d+)/i;