Rubyの文字列操作とは?よく使うメソッドと使い方を解説

PR Ruby

Rubyの文字列操作とは?よく使うメソッドと使い方を解説

💡 この記事でわかること

  • 文字数の数え方(length)と、バイト数との違い
  • 大文字・小文字変換(upcasedowncase)、空白除去(strip)、置き換え(gsubsub)
  • 一部を取り出す([])、含まれるか調べる(include?)方法
  • 分割(split)と連結(join)、数値の書式指定(% / format)
  • 覚えておくと便利な文字列メソッド早見表

1. 文字列操作とは?

文字列操作とは、
👉 文字列の長さを調べたり、一部を取り出したり、置き換えたりすることです。

Rubyの文字列(String)にはたくさんのメソッドが用意されていますが、実際によく使うのは十数個ほどです。この記事では、初心者がまず覚えておきたいものを厳選して紹介します。シングルクォート・ダブルクォートの違いや #{} での式展開は、データ型の記事で紹介済みです。

👉 Rubyのデータ型(文字列・数値・型変換)についての記事はこちら


2. 長さ・大文字小文字

puts "Hello".length      # 5
puts "こんにちは".length    # 5

puts "hello".upcase      # HELLO
puts "WORLD".downcase    # world
puts "hello world".capitalize   # Hello world(先頭だけ大文字)

💡 Rubyの length(size でも可)は、日本語でもそのまま「文字数」を返します。PHPの strlen/mb_strlen のような使い分けは不要です。バイト数(データとしての大きさ)を知りたいときだけ、"こんにちは".bytesize(15)のように別のメソッドを使います。


3. 空白の除去・文字の置き換え

puts "  hello  ".strip          # "hello"(前後の空白を除去)
puts "犬と犬が鳴く".gsub("犬", "猫")   # "猫と猫が鳴く"(すべて置き換え)
puts "犬と犬が鳴く".sub("犬", "猫")    # "猫と犬が鳴く"(最初の1つだけ)
  • strip:前後の空白・改行を除去(lstrip は左だけ、rstrip は右だけ)
  • gsub(検索, 置換):一致する部分をすべて置き換える
  • sub(検索, 置換):最初に一致した部分だけ置き換える

👉 gsubsub はどちらも「元の文字列は変えず、置き換えた結果を新しい文字列として返す」点に注意してください。末尾に ! を付けた gsub!sub! は元の文字列自体を書き換える破壊的メソッドです。


4. 一部を取り出す・含まれるか調べる

s = "abcdef"

puts s[1, 3]     # "bcd"(1番目から3文字)
puts s[1..3]     # "bcd"(1〜3番目の範囲)
puts s[-1]       # "f"(うしろから1番目)

puts "user@example.com".include?("@")     # true
puts "photo.png".start_with?("photo")     # true
puts "photo.png".end_with?(".png")        # true

👉 文字列も配列と同じ [] や範囲(..)、マイナスのインデックスで一部を取り出せます。配列の操作を先に読んでいれば、同じ感覚でそのまま使えます。「含まれるか」は include?、「先頭/末尾が一致するか」は start_with?end_with? で調べます。


5. 分割(split)・連結(join)

# 文字列 → 配列
parts = "りんご,みかん,ぶどう".split(",")
p parts   # ["りんご", "みかん", "ぶどう"]

# 配列 → 文字列
csv = parts.join(" / ")
puts csv  # りんご / みかん / ぶどう

👉 split(区切り文字) で配列に分割、配列.join(つなぎ文字) で文字列に連結します。CSVのような区切りデータを扱うときの基本です。split の引数を省略すると、空白区切りで分割されます。

👉 配列の便利メソッド(map・selectなど)についての記事はこちら


6. 数値の書式指定

puts format("在庫%03d個", 7)     # 在庫007個(0埋め3桁)
puts "在庫%03d個" % 7            # 同じ結果を % 演算子でも書ける

puts format("%.2f円", 1234.5)   # 1234.50円(小数点2桁)

👉 format(sprintf でも同じ)は、桁数や小数点をそろえた文字列を作るときに使います"書式" % 値 という % 演算子を使った書き方もよく見かけます。3桁区切りのカンマを入れたい場合は、標準ライブラリの ActiveSupport(Rails)や自作の変換処理が必要になります。


7. そのほか覚えておきたいメソッド

puts "hello".reverse       # olleh(逆順)
puts "ab" * 3               # ababab(繰り返し)
puts "hello".empty?         # false
puts "".empty?              # true

"abc".each_char { |c| print c, "-" }   # a-b-c-

👉 empty? は文字列が空("")かどうかを調べますnil かどうかを調べる nil? とは別物なので、フォームの未入力チェックなどでは両方を意識する必要があります(nil.empty? を呼ぶとエラーになります)。


8. 文字列メソッド 早見表

メソッドできること
length(size)文字数を数える(日本語も文字数どおり)
bytesizeバイト数を数える
upcase / downcase / capitalize大文字・小文字変換
strip前後の空白・改行を除去する
gsub / subすべて / 最初の1つを置き換える
[](範囲・マイナス番号)一部を取り出す
include? / start_with? / end_with?含まれるか・先頭/末尾が一致するか
split / join分割 / 連結
format(% 演算子)桁数・小数点をそろえた文字列を作る
empty?空文字かどうか

9. まとめ

  • 文字数は length で十分(PHPのような mb_ 系の使い分けは不要)
  • 置き換えは gsub(すべて)・sub(最初の1つ)、末尾 ! は破壊的メソッド
  • 一部の取り出しは配列と同じ []、含まれるかは include?
  • 分割・連結は split / join、桁をそろえるなら format
  • 空文字チェックは empty?nil チェックの nil? とは別物

👉 メソッド名を全部覚える必要はありません。「やりたいこと(数える・取り出す・置き換える)」から早見表で引けるようにしておき、細かい使い方は公式リファレンスで確認する、という進め方で十分です。

-Ruby
-, ,