using RegExp to split string but store whitespace

2019-08-19 18:30发布

sample input (orgtext = a[crlf]b[space]c[crlf] )

I like to store each word a,b, c to the words array with the original suffix crlf or space. Currently calling SPLIT drops the suffix as its separator, but I like to store separator as well. Can I adjust regexp to return also suffix and still split?

Words = new Array; 
var ar: Array = orgtext.split( /\s+/  );   

for (var i:int = 0; i<ar.length;i++ )
{
Words.push(  ar[i] +"suffix here" ); 
}

1条回答
叛逆
2楼-- · 2019-08-19 18:41

Generally you would use keep calling exec with an expression that uses the global (g) so that the lastIndex will be set.

var input : String = "asd asd asd asd";
var output : Array = new Array();

var expr : RegExp = /[^\s]+(?:$|\s+)/g;
var result : Object = expr.exec(input);

while(result != null)
{
    input.push(result[0].toString());
    result = expr.exec(input);
}

Depending on the number of matches you can expect, it might be faster to use...

([^\s]+(?:$|\s+))+

... which will capture all possible matches in one exec(). The matches will be available in result[1] ... result[n]

查看更多
登录 后发表回答