2012-01-07 26 views

Trả lời

28

Phương thức to_i trả về số được tạo bởi tất cả các chữ số có thể phân tách khi bắt đầu của chuỗi. Chuỗi đầu tiên của bạn bắt đầu bằng một chữ số để số to_i trả về, chuỗi thứ hai không bắt đầu bằng một chữ số để 0 được trả về. BTW, khoảng trắng bị bỏ qua, vì vậy " 123abc".to_i lợi nhuận 123.

+1

Điều đó có nghĩa là nếu có ký tự không phải số nguyên trong đầu chuỗi, to_i sẽ bỏ qua phần còn lại của chuỗi? – hsinxh

+1

Chính xác, nếu chuỗi bắt đầu bằng một ký tự không phải số nguyên, ngay lập tức dừng phân tích cú pháp và trả về 0, bỏ qua bất kỳ số nào có thể đến sau trong chuỗi. – DarkDust

+2

Điều đó không hoàn toàn đúng - nó sẽ phân tích cú pháp thông qua các ký tự khoảng trống. "123" .to_i sẽ đánh giá thành 123, giống như một chuỗi bắt đầu bằng một tab. –

7

Từ tài liệu cho String#to_i:

Trả về kết quả của việc giải thích các nhân vật hàng đầu trong str là một số nguyên

+0

+1 cho liên kết RDoc. –

4

ví dụ More đầy đủ các to_i :

irb(main):013:0* "a".to_i 
=> 0 
irb(main):014:0> "".to_i 
=> 0 
irb(main):015:0> nil.to_i 
=> 0 
irb(main):016:0> "2014".to_i 
=> 2014 
irb(main):017:0> "abc2014".to_i 
=> 0 
irb(main):018:0> "2014abc".to_i 
=> 2014 
irb(main):019:0> " 2014abc".to_i 
=> 2014 
Các vấn đề liên quan