使用RegExp并拆分以读取文件文本闪存

时间:2012-12-24 18:31:05

标签: actionscript-3 flash

我的文件文字超过1 000 000行,以字符 C 开头,其他字符以 M 开头 例如:

C9203007870000000000000006339912610971240095400111200469300000 16122011AMI  00000100010000315       080  
C9203007870000000000000006339912610971240095400111200469300000 09122011B    590001000100000270016092100  
M920300787000000000000000633991261097124009540011120046930000031122011JVJF004       10     N
M920300787000000000000000633991261097124009540011120046930000009122011DEQP003       10     N                                
M920300787000000000000000633991261097124009540011120046930000012122011ACQK001       10Z    N
C9203007870000000000000006339912610971240095400111200469300000 24122011AMI  00000100010000315       080
C9203007870000000000000006339912610971240095400111200469300000 24122011AMI  00000100010000315       080

我想在数组中只输入以 M 字符开头的行 我如何添加我的分割:var pattern:RegExp = / ^ M /;

var mFileReference:FileReference;
var mArray:Array = new Array();

function onFileLoaded(event:Event):void
{
    mFileReference = event.target as FileReference;
    data = mFileReference["data"];
    mArray = (data.toString()).split("\n");
}

我不想通过循环'for'来占用大量的时间和资源 我想添加/ ^ M /到我的分裂是否可能?

for each (var s:String in mArray) 
{
        if (pattern.test(s)) {
            values.push(s);
        }
}

谢谢大家。

1 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

/^M.*/gm

这应匹配以M开头的所有行,而不是其他任何行。

它使用g标记来匹配字符串中表达式的所有情况,并使用m进行多行模式,因此^$将匹配行的开头/结尾而不是字符串的开头/结尾。

你可以这样得到你的阵列:

mArray = data.toString().match(/^M.*/gm);