Re: [flexcoders] How to split a String on spaces but including Quoted Phrases?

2010-08-02 Thread Nick Middleweek
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?

2010-07-29 Thread Keith Reinfeld
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?

2010-07-29 Thread Oleg Sivokon
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?

2010-07-29 Thread Oleg Sivokon
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