• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Ruby to_iの使い方

この記事のポイント

  • 文字列から整数への変換処理の基本的な仕組み
  • to_iメソッドの変換ルールと注意点の理解
  • 実際の開発で使える実用的なデータ変換例

目次

Rubyのto_iメソッドとは?

Rubyのto_iメソッドは、文字列や他のデータ型を整数(Integer)に変換するためのメソッドです。プログラミングにおいて、ユーザーからの入力値やファイルから読み込んだデータは通常文字列として扱われるため、数値計算を行う前に適切な数値型に変換する必要があります。to_iメソッドは文字列の先頭から数字として解釈できる部分を整数に変換し、解釈できない文字が現れた時点で変換を停止します。数値として解釈できない文字列の場合は0を返すという特徴があります。データ処理やユーザーインターフェースの開発において必須の機能です。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

基本構文

to_iメソッドの基本的な構文は非常にシンプルで、変換したい値に対してto_iメソッドを呼び出すだけです。文字列の場合は「文字列.to_i」、変数の場合は「変数名.to_i」のように記述します。メソッドは引数を取ることもでき、基数を指定して異なる進数での変換も可能です。デフォルトでは10進数として変換されますが、2進数や16進数などの変換も行えます。変換できない文字列や nil の場合は0が返されるため、エラーハンドリングが簡単です。以下に基本的な使用例を示します。

age_str = "3" age_num = age_str.to_i puts "ネコの年齢: #{age_num}歳"

出力結果:

ネコの年齢: 3歳
animals_count = ["2", "5", "1"] animals_count.each do |count| puts "#{count.to_i}匹のウサギがいます" end

出力結果:

2匹のウサギがいます
5匹のウサギがいます
1匹のウサギがいます

実用例

ここからは、実際の開発現場でよく使用されるto_iメソッドの実践的な使用例を紹介します。ユーザー入力の処理から、CSVファイルのデータ変換、配列データの一括処理まで、さまざまなシチュエーションでのコード例を通じて理解を深めましょう。各例では、実際に動作するコードとその出力結果を併せて示しており、コピーして実行することで動作を確認できます。これらの例を参考に、自分のプログラムにto_iメソッドを活用してみてください。

基本的な文字列の数値変換

最も基本的な使い方として、文字列として保存された動物の数を整数に変換して計算を行う例です。データベースやファイルから取得した文字列データを数値計算で使用する際の基本的なパターンです。

dog_count = "7" cat_count = "5" total_pets = dog_count.to_i + cat_count.to_i puts "イヌが#{dog_count.to_i}匹、ネコが#{cat_count.to_i}匹、合計#{total_pets}匹います"

出力結果:

イヌが7匹、ネコが5匹、合計12匹います

無効な文字列の変換

数値として解釈できない文字列や、部分的に数値を含む文字列をto_iで変換した場合の動作を確認する例です。エラーハンドリングの基本として重要な動作パターンを示しています。

invalid_data = ["abc", "12ライオン", "ゾウ34", ""] invalid_data.each do |data| converted = data.to_i puts "#{data.inspect} → #{converted}" end

出力結果:

"abc" → 0
"12ライオン" → 12
"ゾウ34" → 0
"" → 0

小数点を含む文字列の変換

小数点を含む文字列をto_iで変換する場合の動作を確認する例です。to_iメソッドは整数部分のみを取得し、小数点以下は切り捨てられることを示しています。

decimal_ages = ["2.5", "4.9", "1.1", "6.8"] decimal_ages.each do |age| integer_age = age.to_i puts "#{age}歳のハムスター → #{integer_age}歳として計算" end

出力結果:

2.5歳のハムスター → 2歳として計算
4.9歳のハムスター → 4歳として計算
1.1歳のハムスター → 1歳として計算
6.8歳のハムスター → 6歳として計算

配列データの一括変換

配列に格納された文字列データを一括で整数に変換する例です。mapメソッドとto_iを組み合わせることで、効率的にデータ変換を行う実践的なパターンを示しています。

bird_counts = ["3", "7", "2", "9"] converted_counts = bird_counts.map(&:to_i) total_birds = converted_counts.sum puts "各地点のインコの数: #{converted_counts.join(', ')}" puts "総数: #{total_birds}羽"

出力結果:

各地点のインコの数: 3, 7, 2, 9
総数: 21羽

入力データの変換

ユーザーから入力された文字列データを数値に変換して処理する例です。実際のアプリケーションでユーザーインターフェースを作成する際によく使用される処理パターンを示しています。

user_inputs = ["5", "invalid", "10", "3"] valid_counts = [] user_inputs.each do |input| count = input.to_i if count > 0 || input == "0" valid_counts << count puts "#{count}匹のウサギを登録しました" end end

出力結果:

5匹のウサギを登録しました
10匹のウサギを登録しました
3匹のウサギを登録しました

CSVデータの数値変換

CSV形式のデータを読み込んで数値変換を行う例です。外部ファイルから取得したデータを処理する際の典型的なパターンで、文字列データを適切な数値型に変換して計算を行います。

csv_data = "ライオン,5,大型\nゾウ,3,大型\nキリン,8,大型" csv_data.split("\n").each do |line| name, count, size = line.split(",") animal_count = count.to_i puts "#{name}: #{animal_count}頭 (#{size})" end

出力結果:

ライオン: 5頭 (大型)
ゾウ: 3頭 (大型)
キリン: 8頭 (大型)

年齢計算の数値変換

文字列として保存された生年を使用して、動物の現在の年齢を計算する例です。日付計算と組み合わせたto_iメソッドの実用的な使用例を示しています。

birth_years = ["2020", "2018", "2021", "2019"] current_year = 2025 birth_years.each_with_index do |year_str, index| birth_year = year_str.to_i age = current_year - birth_year puts "#{index + 1}番目のイヌ: #{age}歳 (#{birth_year}年生まれ)" end

出力結果:

1番目のイヌ: 5歳 (2020年生まれ)
2番目のイヌ: 7歳 (2018年生まれ)
3番目のイヌ: 4歳 (2021年生まれ)
4番目のイヌ: 6歳 (2019年生まれ)

数値フォーマットのクリーニング

様々な形式で記録された数値文字列をクリーニングしてから変換する例です。実際のデータ処理では、余分なスペースや特殊文字を含むデータを扱うことが多いため、前処理の重要性を示しています。

messy_data = [" 12 ", "34匹", "56頭目", " 78 羽"] messy_data.each do |data| cleaned = data.strip number = cleaned.to_i puts "#{data.inspect} → クリーニング後: #{number}" end

出力結果:

" 12 " → クリーニング後: 12
"34匹" → クリーニング後: 34
"56頭目" → クリーニング後: 56
"  78  羽" → クリーニング後: 78

まとめ

Rubyのto_iメソッドは、文字列から整数への変換を行う基本的なメソッドです。ユーザー入力の処理、ファイルデータの変換、配列データの一括処理など、さまざまな場面で活用できる重要な機能です。変換できない文字列は0になるという特徴を理解し、適切なエラーハンドリングと組み合わせて使用することで、堅牢なプログラムを作成できます。データ処理の基礎として必須のメソッドです。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby to_iの使い方