Regular expressions - string substitution

Hello all,

A quick question if I have a string like so

000000100

and I want to remove the leading 0's to leave me with a string like so

100

What is the best way to do this? initially I was using
string.delete("0") but that obviously deletes every 0 and is not the
desired outcome. I then though string.gsub(/^0/, "") however this only
gets rid of the very first 0. Does anyone have any suggestions?

Thanks a lot

···

--
Posted via http://www.ruby-forum.com/.

"000000100".to_i.to_s # => 100

···

--
Posted via http://www.ruby-forum.com/.

So long as you'll always be converting numbers, you can use to_i. That
will convert the string into an integer.

"000000100".to_i

=> 100

Keep in mind that it will truncate the number as soon as it reaches a
non-number. For instance:

"00012,345,678".to_i

=> 12

If you need to keep decimals then you can use to_f. For example:

"0001234.567".to_f

=> 1234.567

···

--
Posted via http://www.ruby-forum.com/\.

Try something like this:

string.gsub(/^0*/, "")

This means: 0 or more occurrences of character "0", starting at the
beginning of the string.

···

On Fri, 4 Sep 2009 23:24:34 +0900 Ne Scripter <stuart.clarke@northumbria.ac.uk> wrote:

string.gsub(/^0/, "")

--
http://spiralofhope.com

"000000100".sub(/\A0+/, "")

\A means the beginning of the String and 0+ means one or more zeros.

Also note the use of sub() which only matches once over gsub() which is used to repeat for all matches. There can only be one run of zeros at the front of the String, so sub() is all we need.

Hope that helps.

James Edward Gray II

···

On Sep 4, 2009, at 9:24 AM, Ne Scripter wrote:

Hello all,

A quick question if I have a string like so

000000100

and I want to remove the leading 0's to leave me with a string like so

100

What is the best way to do this? initially I was using
string.delete("0") but that obviously deletes every 0 and is not the
desired outcome. I then though string.gsub(/^0/, "") however this only
gets rid of the very first 0. Does anyone have any suggestions?

Hello,

What is the best way to do this? initially I was using
string.delete("0") but that obviously deletes every 0 and is not the
desired outcome. I then though string.gsub(/^0/, "") however this only
gets rid of the very first 0. Does anyone have any suggestions?

string.sub(/^0+/,'')

should do what you are looking for.

Cheers,

···

--
JJ Fleck
PCSI1 Lycée Kléber

string.sub(/^0*/,'')

Or /^0+/ since both work if there are zeroes, but find nothing if the first character is not a 0.

If your intention is to convert to a number, then one of the other responses will work, but since you presented a string and asked to be left with a string, I wanted to be sure you saw this simple tweak to what you'd already discovered.

-Rob

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

···

On Sep 4, 2009, at 10:24 AM, Ne Scripter wrote:

Hello all,

A quick question if I have a string like so

000000100

and I want to remove the leading 0's to leave me with a string like so

100

What is the best way to do this? initially I was using
string.delete("0") but that obviously deletes every 0 and is not the
desired outcome. I then though string.gsub(/^0/, "") however this only
gets rid of the very first 0. Does anyone have any suggestions?

Thanks a lot
--

Thanks all. I completely forgot about that. It always the simple things

Marc Heiler wrote:

···

"000000100".to_i.to_s # => 100

--
Posted via http://www.ruby-forum.com/\.

Ne Scripter wrote:

Thanks all. I completely forgot about that. It always the simple things

Marc Heiler wrote:

"000000100".to_i.to_s # => 100

>>> I then though string.gsub(/^0/, "") however this only

gets rid of the very first 0.

string.gsub(/^0+/,"")

···

--
Posted via http://www.ruby-forum.com/\.