From: Ganesh Gunasegaran Date: 2007-04-26T07:08:28+09:00 Subject: Re: csv next and previous help A Naive implementation below, string = %q{IM,0000001,D,0,@FRIEDEXT01;IMAGES\00\00;0000001.TIF;2 IM,0000002, ,0,@FRIEDEXT01;IMAGES\00\00;0000002.TIF;2 IM,0000003,D,0,@FRIEDEXT01;IMAGES\00\00;0000003.TIF;2 IM,0000004, ,0,@FRIEDEXT01;IMAGES\00\00;0000004.TIF;2 IM,0000005,C,0,@FRIEDEXT01;IMAGES\00\00;0000005.TIF;2 IM,0000006,D,0,@FRIEDEXT01;IMAGES\00\00;0000006.TIF;2} puts "%%%%%%%%%% BEFOR PARSING %%%%%%%%%%%%%" puts string last_d_line = nil line_array = string.split("\n") line_array.each_with_index do |line, i| if line.split(',')[2] == "D" last_d_line = i end if line.split(',')[2] == "C" arr = line_array[last_d_line].split(',') arr[2] = "P" line_array[last_d_line] = arr.join(',') end end puts "%%%%%%%%%%%% PARSED %%%%%%%%%%%%%%" puts line_array Cheers, Ganesh Gunasegaran On 26-Apr-07, at 2:15 AM, Geoff wrote: > Hey there, > > I'm trying to figure out how to work with the sample data below such > that I can take each time there is a C in the third column and update > the previous D to a P. > > An ideas? > > IM,0000001,D,0,@FRIEDEXT01;IMAGES\00\00;0000001.TIF;2 > IM,0000002, ,0,@FRIEDEXT01;IMAGES\00\00;0000002.TIF;2 > IM,0000003,D,0,@FRIEDEXT01;IMAGES\00\00;0000003.TIF;2 > IM,0000004, ,0,@FRIEDEXT01;IMAGES\00\00;0000004.TIF;2 > IM,0000005,C,0,@FRIEDEXT01;IMAGES\00\00;0000005.TIF;2 > IM,0000006,D,0,@FRIEDEXT01;IMAGES\00\00;0000006.TIF;2 > > This should end up like this: > > IM,0000001,D,0,@FRIEDEXT01;IMAGES\00\00;0000001.TIF;2 > IM,0000002, ,0,@FRIEDEXT01;IMAGES\00\00;0000002.TIF;2 > IM,0000003,P,0,@FRIEDEXT01;IMAGES\00\00;0000003.TIF;2 > IM,0000004, ,0,@FRIEDEXT01;IMAGES\00\00;0000004.TIF;2 > IM,0000005,C,0,@FRIEDEXT01;IMAGES\00\00;0000005.TIF;2 > IM,0000006,D,0,@FRIEDEXT01;IMAGES\00\00;0000006.TIF;2 > > Thank you, > > Geoff > >