【Ruby】レッスン1-04:文字列の扱い方をマスターしよう

一つ前のページでは基本データ型と算術演算子について学習しました。
今回は 文字列操作 について見ていきましょう。
Lesson1:基礎文法編
・Lesson1-1:Ruby学習の入り口|初めてコードを書いてみよう
・Lesson1-2:変数と定数を理解しよう
・Lesson1-3:四則演算をしよう
・Lesson1-4:文字列を操作しよう ◁今回はココ
・Lesson1-5:乱数を生成しよう
・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
Rubyの文字列操作|よく使う基本テクニック

文字列操作はプログラムで文字や単語を扱うために欠かせない技術です。
Rubyでは文字列の取得や変更、結合、空白の削除など、さまざまな操作が簡単に行えます。
この章では基本的な文字列操作をいくつか紹介し、実際に試しながら理解を深めましょう。
文字列の一部を取り出す・書き換える方法
Rubyでは文字列の特定の部分をインデックス(位置番号)を使って取り出したり、変更したりできます。
インデックスは文字列の左から0、1、2…と番号が付けられており、この番号を使うことで、指定した位置の文字を取得したり変更したりします。
text = "Hello, Ruby!" # 部分文字列の取得 puts text[0] # "H" puts text[7] # "R" puts text[-1] # "!"(最後の文字を取得) # 部分文字列の変更 text[0] = "J" puts text # "Jello, Ruby!"
このように、text[インデックス]
で文字列の特定の位置を取得でき、text[インデックス] = "新しい文字"
とすることで、その部分を変更できます。
インデックスを使うことで柔軟に文字列を操作できるようになります。
文字列の長さを調べる・空白を除去する
文字列の長さを確認することは、ユーザーからの入力内容をチェックしたり、データを整える際に役立ちます。
Rubyでは、.length
メソッドまたは.size
メソッドを使うことで文字列の長さを取得できます。
またユーザー入力などで先頭や末尾に不要な空白が含まれる場合、.strip
メソッドで空白を削除できます。
text = " Ruby Programming " puts text.length # 20 puts text.strip # "Ruby Programming"(前後の空白が削除される) puts text.strip.length # 16(空白削除後の文字数)
このように.strip
メソッドを使うと、文字列の前後にある余分なスペースを取り除くことができます。
- chompメソッド:文字列の末尾にある特定の改行のみ取り除く。
- stripメソッド:文字列の先頭と末尾にあるすべての空白文字(スペース、タブ、改行など)を取り除く。
文字列を結合して一文を作る
複数の文字列を結合する場合は+
演算子を使うと簡単に行えます。
また+=
を使うと既存の文字列に新しい文字列を追加できます。
greeting = "Hello" name = "Alice" message = greeting + ", " + name + "!" puts message # "Hello, Alice!" # 連結して更新 greeting += ", Ruby" puts greeting # "Hello, Ruby"
このように+
を使って文字列同士を結合したり、+=
を使って既存の文字列に追加できます。
+
を使った文字列の連結は非常にシンプルで便利です。
式展開で文字列に変数を埋め込む
式展開は文字列の中に変数や計算結果を直接組み込む方法です。式展開を使うとコードがより簡潔で分かりやすくなります。
式展開を使うには文字列をダブルクォート(""
)で囲み、#{}
の中に変数や式を記述します。
name = "Alice" age = 25 # 式展開を使ったメッセージ puts "Hello, #{name}! You are #{age} years old." # "Hello, Alice! You are 25 years old."
このように#{}
を使って文字列の中に変数や計算結果を埋め込むことで、わざわざ+
で連結しなくても文字列を生成できるようになります。
まとめ
今回学んだ文字列操作の基本として「部分文字列の取得と変更」、「文字列の長さと空白の処理」、「文字列の連結」、「式展開」の4つを紹介しました。
これらの操作は文字列を扱う際に非常に役立つので、実際にコードを打ちながら練習してみてください。
基本を身につけることで、より効率的にプログラムを作成できるようになります。
練習問題|文字列の基本操作を実践しよう

文字列操作をしっかりと身に着けるため、練習問題に挑戦しましょう。
簡単な文字列操作をしてみよう
名前を入力してもらい、文字列操作を行うプログラムを作成しましょう。
プログラムでは入力された名前をそのまま表示したり、名前の長さを表示したり、名前の最初の文字を変更して表示します。
文字列操作を通じて、Rubyでの文字列の扱い方に慣れましょう。
以下の要件に従ってコードを完成させてください。
print
を使って「名前を入力してください: 」と表示し、名前の入力を促すこと。- 入力された名前を
strip
メソッドで前後の空白を削除して変数name
に代入すること。 puts
を使って「こんにちは、〇〇さん!」と名前を含めた挨拶を表示すること(〇〇には入力された名前が入るようにする)。length
メソッドを使って名前の文字数を取得し、「あなたの名前は〇〇文字です。」と表示すること。- 名前の最初の文字を
name[0]
で取得し、「名前の最初の文字は「〇」です。」と表示すること。 - 名前の最初の文字を
"*"
に置き換え、「最初の文字を「*」に変更すると、〇〇になります。」と表示すること。
ただし、以下のような実行結果となること。
名前を入力してください: たろう こんにちは、たろうさん! あなたの名前は3文字です。 名前の最初の文字は「た」です。 最初の文字を「*」に変更すると、*ろう になります。
【ヒント】自力で解くのが難しい人へ
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:名前の入力を促すためのメッセージを出力
2:変数name
に入力された名前を空白削除した状態で代入
3:挨拶文「こんにちは、#{name}さん!」を出力
4:入力された名前の文字数を取得し、「あなたの名前は#{name.length}文字です。」と出力
5:入力された名前の最初の文字を取得し、「名前の最初の文字は「#{name[0]}」です。」と出力
6:名前の最初の文字を「*」に置き換える
7:変更後の名前を出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 名前を入力してもらい、文字列操作の練習を行うプログラム # 名前の入力を促す print "名前を入力してください: " # 入力を促すメッセージ =begin 【穴埋め問題1】 ここで`gets.strip`を使用して入力を受け取り、その前後の空白を除去して変数`name`に代入してください。 =end # 入力された名前をそのまま表示 =begin 【穴埋め問題2】 ここで`puts`を使用して「こんにちは、#{name}さん!」と表示するコードを書いてください。 =end # 名前の文字数を表示 =begin 【穴埋め問題3】 ここで`puts`を使用して、名前の文字数を「あなたの名前は#{name.length}文字です。」と表示するコードを書いてください。 =end # 部分文字列の取得と表示 =begin 【穴埋め問題4】 ここで`puts`を使用して、名前の最初の文字を「名前の最初の文字は「#{name[0]}」です。」と表示するコードを書いてください。 =end # 名前を変更してみる =begin 【穴埋め問題5】 ここで`name[0] = "*"`を使って、名前の最初の文字を`"*"`に変更するコードを書いてください。 =end =begin 【穴埋め問題6】 ここで`puts`を使用して、変更後の名前を「最初の文字を「*」に変更すると、#{name} になります。」と表示するコードを書いてください。 =end
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の解答例と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
# 名前を入力してもらい、文字列操作の練習を行うプログラム # 名前の入力を促す print "名前を入力してください: " # 入力を促すメッセージ name = gets.strip # 入力された名前の前後の空白を削除して取得 # 入力された名前をそのまま表示 puts "こんにちは、#{name}さん!" # 式展開を利用して挨拶メッセージを作成 # 名前の文字数を表示 puts "あなたの名前は#{name.length}文字です。" # lengthメソッドで文字数を取得して表示 # 部分文字列の取得と表示 puts "名前の最初の文字は「#{name[0]}」です。" # インデックスを使って最初の文字を取得 # 名前を変更してみる name[0] = "*" # 名前の最初の文字を特定の文字に置き換える puts "最初の文字を「*」に変更すると、#{name} になります。"
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
名前の入力と空白の除去
print "名前を入力してください: " name = gets.strip
print "名前を入力してください: "
は、ユーザーに名前を入力してもらうためのメッセージを表示します。name = gets.strip
ではgets
を使ってコンソールから名前を入力してもらい、strip
メソッドで名前の前後の空白を削除しています。
このstrip
メソッドは不要なスペースを除去したいときに便利です。
名前の表示と式展開
puts "こんにちは、#{name}さん!"
puts
は、文字列を出力するためのメソッドです。"こんにちは、#{name}さん!"
のように#{}
を使うと、文字列の中に変数や式の値を埋め込むことができます。これを「式展開」と呼びます。- この部分ではユーザーが入力した名前を含めて挨拶文を表示しています。
名前の長さの表示
puts "あなたの名前は#{name.length}文字です。"
length
メソッドは文字列の長さ(文字数)を取得するために使います。ここでは入力された名前の文字数を表示しています。"あなたの名前は#{name.length}文字です。"
のように式展開を用いると、length
の結果を直接文字列の中に表示できます。
部分文字列の取得
puts "名前の最初の文字は「#{name[0]}」です。"
name[0]
は、インデックス(番号)を使って、名前の最初の文字を取得しています。
Rubyの文字列インデックスは0から始まり、0は最初の文字、1は2番目の文字というように指定できます。- この部分では、名前の最初の文字を取得して表示しています。
文字の置き換え
name[0] = "*" puts "最初の文字を「*」に変更すると、#{name} になります。"
name[0] = "*"
は、name
の最初の文字を「*」に置き換えています。
このようにインデックスを使って文字列の特定の位置を変更できます。puts
を使って変更後の名前を表示することで、文字の置き換えが反映された結果を確認できます。
まとめ
このプログラムを通してRubyの「文字列操作」の基本を学びました。
具体的には文字列の入力・出力、空白の除去、文字数の取得、部分文字列の取得、文字の置き換えといった基本的な操作が含まれています。
文字列操作は、プログラミングの多くの場面で役立つスキルですので、この基本をしっかりと身につけましょう。
ぜひ、さまざまな文字列操作に挑戦してみてください。
FAQ|Rubyでの文字列操作に関するよくある質問
- Q1. Rubyで文字列の前後にある空白だけを削除するにはどうすればいいですか?
-
Rubyでは
.strip
メソッドを使うことで、文字列の先頭と末尾にある空白・タブ・改行などを一括して削除できます。中央の空白を除去したい場合は別の処理が必要です。
- Q2. 文字列を連結する方法は複数ありますか?違いはありますか?
-
はい、
+
演算子や<<
、concat
メソッドなど複数の方法があります。+
は新しい文字列を生成し、<<
は破壊的(元の変数を変更)で効率が良いため、用途に応じて使い分けましょう。
- Q3. 式展開を使うときに注意すべき点はありますか?
-
式展開はダブルクォートで囲まれた文字列内でのみ機能します。シングルクォートでは
#{}
は展開されず、文字列としてそのまま扱われるため、意図した結果が得られません。