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?

···

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

"1234".split('')[1].to_i # => 2

···

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?

--
Aaron Patterson
http://tenderlovemaking.com/

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]

···

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

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

--
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de

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

···

On Jun 26, 2009, at 4:55 PM, 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?
--
Posted via http://www.ruby-forum.com/\.

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

--
David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Now available: The Well-Grounded Rubyist (http://manning.com/black2\)
"Ruby 1.9: What You Need To Know" Envycasts with David A. Black
http://www.envycasts.com

Peter Wu-5 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?

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

···

--
View this message in context: http://www.nabble.com/Strings-to-int-conversion-tp24227159p24268762.html
Sent from the ruby-talk mailing list archive at Nabble.com.

Thanks, guys.

···

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

Bertram Scharpf 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