Strings to int conversion

s = “1234” [0…1]
p s #> “12”
p s.to_i #> 12
s = s[1]
p s #> 50
p s.to_i #> 50

I can see the reason for this happening, but I don’t want it to happen.

So how do I make it return 2 instead of 50?

On Sat, Jun 27, 2009 at 05:55:20AM +0900, Peter Wu wrote:

s = “1234” [0…1]
p s #> “12”
p s.to_i #> 12
s = s[1]
p s #> 50
p s.to_i #> 50

I can see the reason for this happening, but I don’t want it to happen.

So how do I make it return 2 instead of 50?

“1234”.split(’’)[1].to_i # => 2

Peter Wu wrote:

s = “1234” [0…1]
p s #> “12”
p s.to_i #> 12
s = s[1]
p s #> 50
p s.to_i #> 50

I can see the reason for this happening, but I don’t want it to happen.

So how do I make it return 2 instead of 50?

s[1,1]
s[1…1]

Thanks, guys.

Hi,

Am Samstag, 27. Jun 2009, 05:55:20 +0900 schrieb Peter Wu:

s = “1234” [0…1]
s = s[1]
p s #> 50

I can see the reason for this happening, but I don’t want it to happen.

The answer has already been given.

As far as I know Ruby 1.9 returns “2”.

There’s another [] operator that’s not well known:

16[4] #=> 1 (the 4th bit is 1)

Bertram

Hi –

On Sat, 27 Jun 2009, Peter Wu wrote:

s = “1234” [0…1]
p s #> “12”
p s.to_i #> 12
s = s[1]
p s #> 50
p s.to_i #> 50

I can see the reason for this happening, but I don’t want it to happen.

So how do I make it return 2 instead of 50?

Addendum to other answers:

In 1.9 it returns the character rather than the character code.

David

One of Ruby’s problems is that it invites clever solutions, which are
computationally costly and create undue amounts of garbage.

How about

?> “1234”[1].chr
=> “2”

Cheers,

Bob Schaaf

Bertram S. wrote:

There’s another [] operator that’s not well known:

16[4] #=> 1 (the 4th bit is 1)

Wow, I’ve been using ruby for many years but there’s
always something new to learn isn’t it? Thanks.

Daniel

Peter Wu-5 wrote:

So how do I make it return 2 instead of 50?

p s[1].chr.to_i #=> 2