On Tue, Dec 22, 2009 at 9:09 AM, Barney Boisvert <bboisv...@gmail.com> wrote:
>
> Use a CSV parsing library, rather than rolling your own.  They take
> care of all that stuff for you.  I've used
> http://ostermiller.org/utils/CSV.html in the past.

I took a look at that and didn't see anything that would be of help
since it's not standard formatted that I can see.

> If you really want to parse it yourself, you can use listToArray, and
> then iterate over the array and combine items that are quoted.  For
> example take this line:
>
> 1,"barney","boisvert, \"crazy man\", barney","1234 Main Street, Apt 5"
>
> When you listToArray it, you'll get this:
>
> [
>  '1',
>  '"barney"',
>  '"boisvert',
>  ' \"crazy man\"',
>  ' barney"',
>  '"1234 Main Street',
>  ' Apt 5"'
> ]
>
> Note the position of the double quotes in the items.  What you need to
> do is find items that START with a double quote, and then combine them
> with the following elements until you find an element that ENDS with a
> double quote.  You'll need to handle the case when the current item is
> the whole string (in the case of the second element), and when the
> ending quote is escaped (the forth item).
>
> In this particular case you need to remove the quotes from item 2
> (since it's a whole string to itself), and you need to combine items
> 3, 4 and 5 (3 starts with a quote, 5 ends with a quote).  The quotes
> in item 4 are escaped, so they should be ignored for combination, and
> then the backslashes should be removed after the fact.  Note that
> you'll need to deal with double-escaping.  As you can see, it's a
> mess, so I'd highly recommend the third-party library.  ;)

See, the issue is that there is no escaped quotes to show it's part of
the field.

3270,5101650,"Dewey, Cheatum & Howe ", 0 , 0 ,0.00,0.00,9.25,-9.25
3270,5101650,Phillip Vector , 34 ," 3,161.00
",92.97,79.25,61.76,17.50
3270,5101650,"James P. Kardone JR., P.C. ", 0 , 0 ,0.00,0.00,9.25,-9.25

So I'm not sure how to determine the end quote. I suppose I can set a
flag if I have started with a quote and unset the flag when I
encounter another quote... But I was hoping I didn't have to loop over
every character to do it.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Want to reach the ColdFusion community with something they want? Let them know 
on the House of Fusion mailing lists
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:329316
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to