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!
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 B. http://agileconsultingllc.com
[email protected]
Awesome - this is a start - I’ll take it from here.
Thanks!
On Feb 27, 4:14 pm, Rob B. [email protected]
string = ‘10.0’
string.sub!(/.\d+/, ‘’)
This will replace in place (sub!) any dot (.) followed by at least
one number (\d+) with nothing (’’).
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
Sorry, I didn’t read your first posting fully. My solution will not
work for the case of 482.600.
Pepe
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
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 Significant figures - Wikipedia)
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 J.