Problem replacing newlines in regexp


#1

I’m trying to do a gsub ( “\n” , " " ) but none of the newlines are
replaced. Is there something special I have to do for newlines? (If it
makes
a difference, I’m running under Windows.)

Thanks,
Mike S.


#2

On 4/30/07, Mike S. removed_email_address@domain.invalid wrote:

I’m trying to do a gsub ( “\n” , " " ) but none of the newlines are
replaced. Is there something special I have to do for newlines? (If it makes
a difference, I’m running under Windows.)

Try gsub!( “\n” , " " )

Harry


#3

Harry wrote:

Harry

You’ve probably gotta specify the multiline match option (the /m at the
end):
line.gsub!(/\n/m, " ")

Dan


#4

Okay, here’s the birds-eye view:

I’m converting some database data from pure text to CSV format, and I
need
to replace the newlines with something else (a space or a slash).

Sample input record:

Field1=value1
Field2=value2
more stuff in Field2
---------- # end-of-record separator

Sample output record:

FIELD1,FIELD2
value1,value2 / more stuff in Field2

Does that help?

And the /m option only changes how “.” is treated in a regexp, right?

Can I use somestring.gsub ( /$/ , " " ) instead of somestring.gsub (
/\n/ ,
" " )?


#5

On 4/30/07, Dan Z. removed_email_address@domain.invalid wrote:

Harry

You’ve probably gotta specify the multiline match option (the /m at the
end):
line.gsub!(/\n/m, " ")

Dan

I just noticed the subject said regexp, not string. oops.
Mike, would you post some code?
It will make it easier to understand what you are trying to do.

Harry


#6

Mike S. wrote:

---------- # end-of-record separator

Can I use somestring.gsub ( /$/ , " " ) instead of somestring.gsub ( /\n/ ,
" " )?

I guess you’re right that /m isn’t useful here. But gsub(/\n/, " ") does
seem to do what you want. And you can’t use /$/ here because when you
try to substitute for $, it doesn’t actually replace the end of the
line, but adds to it (so what you wrote adds a space to the end of each
line).

Dan