использование RegExp для разделения строки, но сохранение пробелов (пробел или crlf) для элементов

пример ввода (orgtext = a[crlf]b[space]c[crlf] )

Мне нравится хранить каждое слово a, b, c в массиве слов с исходным суффиксом crlf или пробелом. В настоящее время вызов 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" ); 
}

person Tom    schedule 17.02.2009    source источник


Ответы (1)


Как правило, вы должны использовать вызов exec с выражением который использует глобальный (g), чтобы lastIndex быть установлен.

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);
}

В зависимости от количества совпадений, которое вы можете ожидать, может быть быстрее использовать...

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

... который зафиксирует все возможные совпадения в одном exec(). Совпадения будут доступны в результате[1] ... в результате[n]

person Richard Szalay    schedule 17.02.2009