0

我有一个文件文本超过 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");
}

我不想通过循环“因为”它需要大量时间和资源我想将 /^M/ 添加到我的拆分中是否可能?

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

谢谢大家。

4

1 回答 1

3

试试这个正则表达式:

/^M.*/gm

这应该匹配以 M 开头的所有行,仅此而已。

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

你可以像这样得到你的数组:

mArray = data.toString().match(/^M.*/gm);
于 2012-12-24T18:46:35.260 回答