カテゴリ: Ruby 更新日: 2025/12/25

Rubyの文字列置換を完全ガイド!gsub/sub/trの使い方と実用例

置換のやり方:gsub/sub/トランスリテレーション(tr)の実用例
置換のやり方:gsub/sub/トランスリテレーション(tr)の実用例

先生と生徒の会話形式で理解しよう

生徒

「先生、Rubyで文字列の中の文字を置き換えたいときってどうしたらいいんですか?」

先生

「Rubyには文字列置換用の便利なメソッドがいくつかあります。主に subgsubtr です。」

生徒

「えっと、subとgsubってどう違うんですか?trはまた別物ですよね?」

先生

「はい、それぞれ特徴があります。順番に説明して、実用例も見ていきましょう。」

1. subとgsubの基本的な使い方

1. subとgsubの基本的な使い方
1. subとgsubの基本的な使い方

Rubyの sub は、文字列の中で最初に見つかった文字や文字列を置換します。gsub は文字列のすべての一致箇所を置換します。


text = "りんご、みかん、りんご"
puts text.sub("りんご", "バナナ")
puts text.gsub("りんご", "バナナ")

バナナ、みかん、りんご
バナナ、みかん、バナナ

このように、sub は最初の一つだけを置換し、gsub はすべて置換するのが特徴です。

2. 正規表現と組み合わせた置換

2. 正規表現と組み合わせた置換
2. 正規表現と組み合わせた置換

Rubyでは subgsub に正規表現(文字列パターンを表す方法)を使うこともできます。たとえば、数字だけを置き換えたいときに便利です。


price_text = "商品価格は500円です"
puts price_text.gsub(/\d+/, "XXX")

商品価格はXXX円です

ここで /\d+/ は「1回以上続く数字」を意味しています。このように正規表現を使うと、柔軟な文字列置換が可能です。

3. tr(トランスリテレーション)の使い方

3. tr(トランスリテレーション)の使い方
3. tr(トランスリテレーション)の使い方

tr は、文字ごとの置換に特化したメソッドです。文字列の中の文字を対応する文字に置き換えるときに使います。


text = "abcde"
puts text.tr("abc", "123")

123de

trは「文字単位」で置換するため、部分一致の文字列ではなく、文字ごとに対応させて置換するのが特徴です。

4. gsubで複数パターンを置換する

4. gsubで複数パターンを置換する
4. gsubで複数パターンを置換する

Rubyの gsub では、ブロックを渡すことで複数の置換をまとめて処理することも可能です。


text = "赤青緑"
colors = { "赤" => "Red", "青" => "Blue", "緑" => "Green" }
puts text.gsub(/赤|青|緑/) { |match| colors[match] }

RedBlueGreen

このように、置換対象ごとに違う文字列に変換する場合も簡単に実現できます。

5. sub/gsub/trの使い分け

5. sub/gsub/trの使い分け
5. sub/gsub/trの使い分け

置換方法の使い分けは次のように考えるとわかりやすいです。

  • sub:最初に一致したものだけを置換したいとき
  • gsub:文字列全体の一致箇所をすべて置換したいとき
  • tr:文字単位で置換したいとき(複数文字をまとめて変換可能)

用途によって適切な方法を選ぶと、コードが読みやすくなりバグも減らせます。

6. 実用例:ひらがなをカタカナに変換する

6. 実用例:ひらがなをカタカナに変換する
6. 実用例:ひらがなをカタカナに変換する

たとえばユーザー入力のひらがなをカタカナに変換したい場合、trが便利です。


hiragana = "こんにちは"
katakana = hiragana.tr("あ-ん", "ア-ン")
puts katakana

コンニチハ

trは範囲指定もできるので、ひらがなからカタカナ、半角文字から全角文字への変換などにも使えます。

7. 実用例:数字のマスキング

7. 実用例:数字のマスキング
7. 実用例:数字のマスキング

gsubを使えば個人情報やカード番号などの数字を安全に置き換えることもできます。


card = "1234-5678-9012-3456"
masked = card.gsub(/\d{4}/, "****")
puts masked

****-****-****-****

このように、正規表現と組み合わせることで実用的な文字列操作が可能です。

まとめ

まとめ
まとめ

Rubyの文字列置換を体系的に振り返ろう

ここまでの記事では、Rubyにおける文字列置換の基本から実用例まで、sub・gsub・tr という三つの重要なメソッドを中心に解説してきました。Rubyで文字列を扱う場面は非常に多く、ユーザー入力の加工、データ整形、ログの整備、個人情報のマスキングなど、あらゆる場面で文字列置換の知識が役立ちます。そのため、これらのメソッドの違いと使い分けを理解しておくことは、Ruby初心者にとって大きなステップになります。

まず sub は、「最初に一致した一箇所だけを置換する」メソッドです。文章の中で最初に現れる単語だけを差し替えたい場合や、意図しない多重置換を防ぎたい場合に向いています。一方で gsub は、「一致するすべての箇所を置換する」メソッドで、文字列全体を対象にした変換処理に適しています。大量のデータを一括で整形したい場合や、パターンに合致する部分をすべて修正したい場合には欠かせません。

gsub は正規表現と組み合わせることで、さらに強力になります。数字だけを置換したり、特定のパターンに一致する文字列をまとめて変換したりと、柔軟な処理が可能です。また、ブロックを使えば、置換対象ごとに異なる変換結果を返すこともできるため、実務レベルの文字列操作にも対応できます。

そして tr は、文字単位の置換に特化したメソッドです。subgsub が「文字列」や「パターン」を対象にするのに対し、tr は「一文字ずつ対応させて変換する」という特徴を持っています。そのため、ひらがなをカタカナに変換する、特定の記号を別の記号にまとめて置き換える、といった処理に非常に向いています。処理内容が明確で高速なのも利点です。

重要なのは、「どのメソッドが一番便利か」ではなく、「どのメソッドが今の目的に合っているか」を考えることです。sub・gsub・tr を正しく使い分けることで、Rubyのコードは読みやすくなり、無駄な処理やバグを減らすことができます。文字列置換は地味に見えますが、プログラム全体の品質を支える非常に大切な要素です。

まとめとしての確認用サンプルプログラム


text = "電話番号は090-1234-5678です"

# 最初の数字だけ置換
puts text.sub(/\d+/, "XXX")

# すべての数字を置換
puts text.gsub(/\d/, "*")

# 記号を別の記号に変換
puts text.tr("-", "/")

このサンプルでは、sub・gsub・tr の違いが一目で分かるようになっています。どれも「置換」という同じ目的を持ちながら、対象や結果が異なる点に注目すると理解が深まります。実際の開発では、こうした小さなサンプルを試しながら挙動を確認することが、確実なスキル習得につながります。

先生と生徒の振り返り会話

生徒

「sub と gsub と tr が、ただ名前が違うだけじゃないことがよく分かりました。」

先生

「そうですね。それぞれ役割が違うので、目的に合わせて選ぶのが大切です。」

生徒

「文字列を全部置換したいときは gsub、文字単位なら tr、最初だけなら sub、という感じですね。」

先生

「その理解でばっちりです。特に gsub と正規表現を組み合わせると、できることが一気に広がります。」

生徒

「入力チェックや個人情報のマスキングにも使えそうだと思いました。」

先生

「まさに実務でよく使う場面ですね。ぜひ実際にコードを書いて、使い分けに慣れていきましょう。」

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう
No.8
Java&Spring記事人気No8
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説