Forum: Ruby on Rails Regular Expression question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
068d5aec7da6333ce34a848ed4867668?d=identicon&s=25 northband (Guest)
on 2009-02-27 20:47
(Received via mailing list)
Hi -

I would like to use gsub() to strip decimals with trailing zeros from
a string.  My string looks like this:
--
19.0 " / 482.600 mm
--

I would like to end up with this:
--
19 " / 482.6 mm
--

Anyone have a regular expression that can do this?

Thanks!
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2009-02-27 22:15
(Received via mailing list)
On Feb 27, 2009, at 2:47 PM, northband wrote:

> --
> 19 " / 482.6 mm
> --
>
> Anyone have a regular expression that can do this?
>
> Thanks!
> >


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
068d5aec7da6333ce34a848ed4867668?d=identicon&s=25 northband_101 (Guest)
on 2009-02-27 22:38
(Received via mailing list)
Awesome - this is a start - I'll take it from here.

Thanks!

On Feb 27, 4:14 pm, Rob Biedenharn <R...@AgileConsultingLLC.com>
10f7e00c1c5c60e2173995eb16f4ffc7?d=identicon&s=25 pepe (Guest)
on 2009-02-28 16:13
(Received via mailing list)
string = '10.0'
string.sub!(/\.\d+/, '')

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

Pepe
10f7e00c1c5c60e2173995eb16f4ffc7?d=identicon&s=25 pepe (Guest)
on 2009-02-28 16:14
(Received via mailing list)
Sorry, I didn't read your first posting fully. My solution will not
work for the case of 482.600.

Pepe
10f7e00c1c5c60e2173995eb16f4ffc7?d=identicon&s=25 pepe (Guest)
on 2009-02-28 17:49
(Received via mailing list)
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
6883e5ef03484d4fcef507d7b4f1d243?d=identicon&s=25 Matt Jones (Guest)
on 2009-03-01 00:30
(Received via mailing list)
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
10f7e00c1c5c60e2173995eb16f4ffc7?d=identicon&s=25 pepe (Guest)
on 2009-03-01 17:51
(Received via mailing list)
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
This topic is locked and can not be replied to.