Nick,
I think this satisfies your conditions. There is a for-loop but it's not
iterating over the entire string, which, I'm certain, is what you wanted to
avoid.
var myString:String = 'flex "action script" parse string function';
var resultArr:Array = regExpDQ(myString, false);
trace("resultArr = ",resultArr);
function regExpDQ(s:String, includeQuotes:Boolean):Array {
var re:RegExp = /".*?"/g;
// get string segments contained in double-quotes
var matchArr:Array = s.match(re);
// strip out string segments contained in double-quotes
s = s.split(re).join('');
// put the remaining string segments into an array
var arr:Array = s.split(' ');
// merge the two arrays
var len:uint = arr.length;
var a:Array = [];
var j:uint = 0;
for(var i:uint = 0; i < len; i++) {
if(arr[i] != ""){
a[i] = arr[i];
}else{
if(includeQuotes){
a[i] =
matchArr[j++];
}else{
a[i] =
matchArr[j++].split('"').join("");
}
}
}
return a;
}
Regards,
Keith Reinfeld
Home Page: <http://keithreinfeld.home.comcast.net/>
http://keithreinfeld.home.comcast.net
From: [email protected] [mailto:[email protected]] On
Behalf Of Nick Middleweek
Sent: Wednesday, July 28, 2010 12:20 PM
To: [email protected]
Subject: [flexcoders] How to split a String on spaces but including Quoted
Phrases?
Hi,
I haven't been able to work out regex yet so apart from looping and parsing
a string manually, is there anyway of parsing the following string...
flex "action script" parse string function
into the following Array...
[0] = flex
[1] = action script
[2] = parse
[3] = string
[4] = function
Thanks,
Nick
<<image001.jpg>>
<<image002.jpg>>

