Rubyの置換処理の書き方
Rubyで文字列の置換処理を行う方法はいくつかありますが、主に使用されるのはString#gsub、String#sub、String#gsub!、およびString#sub!メソッドです。
それぞれのメソッドについて詳しく説明します。
1. gsubとsubメソッド
gsubとsubメソッドは、指定したパターンに一致する部分を別の文字列に置換します。
gsubは「global substitution(全置換)」の略で、文字列全体で一致するすべての部分を置換します。
一方、subは最初に一致した部分のみを置換します。
使用例
str = "Hello, world! Hello, Ruby!" # gsubを使って"Hello"を"Hi"に置換 new_str = str.gsub("Hello", "Hi") puts new_str # 出力: "Hi, world! Hi, Ruby!" # subを使って最初の"Hello"だけを"Hi"に置換 new_str2 = str.sub("Hello", "Hi") puts new_str2 # 出力: "Hi, world! Hello, Ruby!"
上記の例では、gsubメソッドは文字列全体で"Hello"を"Hi"に置換しますが、subメソッドは最初の"Hello"だけを"Hi"に置換します。
2. gsub!とsub!メソッド
gsub!とsub!メソッドは、それぞれgsubとsubの破壊的バージョンです。
これらのメソッドは、元の文字列を直接変更します。
破壊的メソッドを使うと、元のオブジェクトが変更されるため、注意が必要です。
使用例
str = "Hello, world! Hello, Ruby!" # gsub!を使って"Hello"を"Hi"に置換 str.gsub!("Hello", "Hi") puts str # 出力: "Hi, world! Hi, Ruby!" # 元の文字列が変更されていることに注意
この例では、gsub!メソッドが呼び出されると、strオブジェクト自体が変更されます。
したがって、変更後のstrには"Hi, world! Hi, Ruby!"という文字列が格納されます。
3. 正規表現を使った置換
gsubやsubメソッドは、単純な文字列だけでなく、正規表現を使ってより柔軟な置換を行うこともできます。
例えば、すべての数字を*に置換する場合は次のようにします。
使用例
str = "My phone number is 123-456-7890." # 正規表現を使ってすべての数字を"*"に置換 new_str = str.gsub(/\d/, "*") puts new_str # 出力: "My phone number is ***-***-****."
この例では、正規表現の\dは数字に一致するため、文字列内のすべての数字が*に置換されます。
4. ブロックを使った置換
gsubやsubメソッドは、ブロックを受け取ることもできます。
ブロックを使うと、置換する値を動的に生成できます。
使用例
str = "Hello, world! Hello, Ruby!" # ブロックを使って"Hello"をその長さで置換 new_str = str.gsub("Hello") { |match| match.length.to_s } puts new_str # 出力: "5, world! 5, Ruby!"
この例では、gsubメソッドにブロックを渡し、"Hello"をその長さ(5)に置換しています。
5. 複数のパターンを一度に置換する
gsubメソッドを使って、複数のパターンを一度に置換することもできます。
この場合、ハッシュを使って置換のルールを指定します。
使用例
str = "Hello, world! Hello, Ruby!" # ハッシュを使って複数のパターンを一度に置換 new_str = str.gsub(/Hello|world/, "Hello" => "Hi", "world" => "earth") puts new_str # 出力: "Hi, earth! Hi, Ruby!"
この例では、gsubメソッドにハッシュを渡して、"Hello"を"Hi"に、"world"を"earth"に置換しています。
6. プレースホルダーを使った置換
Rubyでは、プレースホルダー(変数埋め込み)を使った置換も可能です。
String#%メソッドを使って、変数の値を文字列に挿入できます。
使用例
name = "Ruby" greeting = "Hello, %s!" % name puts greeting # 出力: "Hello, Ruby!"
この例では、%記号を使ってname変数の値を文字列に挿入しています。
まとめ
Rubyでの文字列の置換処理には、さまざまな方法があります。
gsubとsub、およびそれぞれの破壊的バージョンgsub!とsub!を使うことで、文字列全体または最初に一致した部分を置換できます。
また、正規表現やブロックを使って柔軟な置換を行ったり、複数のパターンを一度に置換することも可能です。
これらのメソッドを使いこなすことで、より効率的で強力な文字列操作ができるようになります。