はじめてのRuby!to_iメソッドで文字列を整数に変換する

Rubyには数値文字列や指定した進数に変換するのに便利なto_iメソッドがあります。

「数値文字列を整数に変換したい」
「配列の数値文字列を全て整数に変換したい」
「数値文字列をx進数に変換したい」

といった方に向けて、この記事ではto_iメソッドについて以下の内容で解説していきます!


・to_iメソッドとは
・数値文字列を整数に変換する方法
・配列の数値文字列を整数に変換する方法
・10進数以外に変換する方法

ここではto_iメソッドの使い方についてわかりやすく解説していますので、ぜひ参考にしてください。

to_iメソッドとは

to_iは一言で言うと「数字文字列を10進数の整数に変換するためのメソッド」です。

to_iメソッドの書き方

# 10進数を整数に変換
文字列オブジェクト.to_i

# 何進数か指定する
文字列オブジェクト.to_i(進数)

to_iメソッドは引数を指定しないと、数値文字列を10進数に変換します。

引数を指定することで何進数に変換するか指定することができます。

数値文字列を整数に変換する

ここでは数値文字列をto_iメソッドで整数に変換する方法を紹介します。

以下のサンプルをご覧ください。

str1 = "20"
str2 = "5 apples."
str3 = "orange"

p str1.to_i
p str2.to_i
p str3.to_i

実行結果:

20
5
0

このようにto_iメソッドは文字列が数値と見なせる場合は整数として変換します。

数値を含んだ文字列の場合、先頭が数値とみなせれば、数値部分を切り取って整数に変換します。

また、文字列が数値とみなされない場合は0を返します。

配列の数値文字列を整数に変換する

to_iメソッドは文字列String型で使用できるメソッドのため、配列の数値文字列はそのまま指定してもエラーが発生します。

array = ["0", "1", "2", "3", "4", "5"]

p array.to_i

実行結果:

Main.rb:13:in `<main>': undefined method `to_i' for ["0", "1", "2", "3", "4", "5"]:Array (NoMethodError)

そのため、配列の数値文字列を変換する場合は以下のように記述します。

array = ["0", "1", "2", "3", "4", "5"]

p array.map!{|x| x.to_i}

実行結果:

[0, 1, 2, 3, 4, 5]

このサンプルでは配列に対してmapメソッドで繰り返し処理を実行し、ブロックの処理で要素1つずつに対してto_iメソッドで整数に変換しています。

10進数以外に変換する

to_iメソッドは引数を指定することで10進数の整数以外の数値に変換することができます。

たとえば、引数に2を指定した場合は2進数、8を指定した場合は8進数に変換できます。

以下のサンプルをご覧ください。

# 2進数に変換
str1 = "10101111"
puts str1.to_i(2)

# 8進数に変換
str2 = "371"
puts str2.to_i(8)

# 10進数に変換
str3 = "222"
puts str3.to_i(10)

# 16進数に変換
str4 = "0xFF"
puts str4.to_i(16)

実行結果:

175
249
222
255

このように引数で何進数に変換するか指定することで、指定したx進数に変換することができます。

まとめ

ここでは、数値文字列を整数または指定した進数に変換できるto_iメソッドについて、以下の内容で解説しました。

  • to_iメソッドの使い方
  • 数値文字列を整数に変換する方法
  • 配列の数値文字列を整数に変換する方法
  • 10進数以外に変換する方法

to_iメソッドを使用すれば、簡単に文字列を整数に変換できますので使い方については理解しておきましょう。

もし、to_iメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。