【Ruby】レッスン1-04:文字列操作を使いこなそう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:文字列操作

この記事の練習問題を解くために必要な知識:
入力と出力の基本コメントの書き方変数と定数基本データ型と算術演算子文字列操作乱数生成

<<前のページ Ruby記事一覧
次のページ>>

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で簡単な文字列操作をしてみよう

名前を入力してもらい、文字列操作を行うプログラムを作成しましょう。

プログラムでは入力された名前をそのまま表示したり、名前の長さを表示したり、名前の最初の文字を変更して表示します。

文字列操作を通じて、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の「文字列操作」の基本を学びました。

具体的には文字列の入力・出力、空白の除去、文字数の取得、部分文字列の取得、文字の置き換えといった基本的な操作が含まれています。

文字列操作は、プログラミングの多くの場面で役立つスキルですので、この基本をしっかりと身につけましょう。

ぜひ、さまざまな文字列操作に挑戦してみてください。

<<前のページ Ruby記事一覧
次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る