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メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!