Regular Expression question

Hi -

I would like to use gsub() to strip decimals with trailing zeros from
a string. My string looks like this:

It depends on how you make the string.

"19.0".sub(/\.?0+\z/,'') #=> "19"
"482.600".sub(/\.?0+\z/,'') #=> "482.6"

If you replace \z with (\D|\z) and substitute '\1', it might work.
(You can try it out yourself.)

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

Awesome - this is a start - I'll take it from here.

Thanks!

string = '10.0'
string.sub!(/\.\d+/, '')

This will replace in place (sub!) any dot (\.) followed by at least
one number (\d+) with nothing ('').

Pepe

Sorry, I didn't read your first posting fully. My solution will not
work for the case of 482.600.

Pepe

OK, got something working you might be able to use.

Just to make things more complicated:

s = '19.0 / 482.600 mm / 19.060 / 482.600 mm'
s.gsub!(/(\.0?[^0])?0+/, '\1').gsub!(/\.[\s\n]/, '')

Pepe

There appear to be some good solutions here, but I thought I'd jump
in
with a bit of non-Rails technical detail.

I'd double check with the source of this data - the zeros may be
significant.
(see http://en.wikipedia.org/wiki/Significant_figures)

The data given doesn't seem to match that (482.600 mm would be written
as
19.0000"), but it doesn't hurt to verify...

--Matt Jones

Hi.

I just tested the regexp against 19.0000 and it works, but I got a
little problem with the [\s\n]I just solved:

s = '19.0000 / 482.600 mm / 19.060000 / 482.600 mm'
s.gsub!(/(\.0?[^0])?0+/, '\1').gsub!(/\.([\s\n])/, '\1')

This produces: '19 / 482.6 mm / 19.06 / 482.6 mm'

The "insignificant" trailing zeros after are always trimmed after a
decimal point.

Pepe