Re: [flexcoders] How to split a String on spaces but including Quoted Phrases?
Guys, I missed this one... Thank you for your replies... I'll check out the code and see what works. I did end up writing a string parser but I'm now curious to see how RegEx stands up to the task. Cheers, Nick On 29 July 2010 23:30, Oleg Sivokon olegsivo...@gmail.com wrote: Ouch, actually, it has a flaw, but I'm not sure you need a fix for that, but it's possible to fix it, if you want. It only checks for the double quotes, when it checks for the non-quoted words, but it checks for both single and double quoted groups of words. If you need both single and double quotes however, the expression is going to be a tid bit longer... but if you don't need, then it'd be shorter in fact: /(.*[^])|(\s[^\s]+(?!\s))/g
RE: [flexcoders] How to split a String on spaces but including Quoted Phrases?
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: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of Nick Middleweek Sent: Wednesday, July 28, 2010 12:20 PM To: flexcoders@yahoogroups.com 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.jpgimage002.jpg
Re: [flexcoders] How to split a String on spaces but including Quoted Phrases?
Sorry to chum in :) var re:RegExp = /((|').*(?=\2)\2)|(\s[^\s]+(?!\s))/g; var text:String = ![CDATA[Lacrimosa dies illa, qua resurget ex favilla iudicandus homo reus. Huic ergo parce, Deus: Pie Iesu Domine, dona eis requiem.]].toString(); var result:Object; while (result = re.exec(text)) { trace(result[0]); }
Re: [flexcoders] How to split a String on spaces but including Quoted Phrases?
Ouch, actually, it has a flaw, but I'm not sure you need a fix for that, but it's possible to fix it, if you want. It only checks for the double quotes, when it checks for the non-quoted words, but it checks for both single and double quoted groups of words. If you need both single and double quotes however, the expression is going to be a tid bit longer... but if you don't need, then it'd be shorter in fact: /(.*[^])|(\s[^\s]+(?!\s))/g