我想使用正则表达式从字符串中提取,为什么它不起作用? 从“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使用?如果不使用正则表达式,可能有更好的方法吗?
答案 0 :(得分:0)
可能错误的RegExp。
修正以下行
var levelObjInfoExp:RegExp = /(\d+):(\d+)*(\d+)/ig;
到
var levelObjInfoExp:RegExp = /(\d+):(\d+)\*(\d+)/i;