我的文件文字超过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);
}
}
谢谢大家。
答案 0 :(得分:3)
试试这个正则表达式:
/^M.*/gm
这应匹配以M开头的所有行,而不是其他任何行。
它使用g
标记来匹配字符串中表达式的所有情况,并使用m
进行多行模式,因此^
和$
将匹配行的开头/结尾而不是字符串的开头/结尾。
你可以这样得到你的阵列:
mArray = data.toString().match(/^M.*/gm);