【Ruby3.x】String::scrub()メソッドの使い方
scrubメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
scrubメソッドは、Stringクラスのインスタンスに対して、不正なバイトシーケンスを安全に処理するために使用されるメソッドです。
このメソッドの主な目的は、異なる文字エンコーディング間で文字列を操作する際に発生しうる「Encoding::InvalidByteSequenceError」のような例外を防ぎ、アプリケーションの安定性を向上させることです。Webページから取得したデータやファイルから読み込んだ文字列など、予期せぬエンコーディングのデータが含まれている場合に特に役立ちます。
scrubメソッドは、対象の文字列内に含まれる、現在のエンコーディングでは解釈できない不正なバイトシーケンスを検出すると、それらを特定の置換文字に置き換えた新しい文字列を返します。元の文字列は変更されず、常に新しい文字列オブジェクトが返されるため、非破壊的な操作となります。
置換文字はオプションで指定することができ、デフォルトではUnicodeの「U+FFFD REPLACEMENT CHARACTER」(�)が使用されます。例えば、my_string.scrub('*')のように記述することで、不正なバイトシーケンスをアスタリスクに置き換えることができます。また、オプションで結果の文字列に適用するエンコーディングを指定することも可能です。これにより、文字列のエンコーディング自体を変換しつつ、その過程で発生する不正なシーケンスも同時に処理できます。
このように、scrubメソッドは、エンコーディングの問題によってプログラムが予期せず停止するのを防ぎながら、データの整合性を保ち、安全な文字列処理を実現するための重要なツールです。
構文(syntax)
1"invalid\xFFstring".scrub('?')
引数(parameters)
repl = nil
- repl = nil: 置換文字列を指定します。nil の場合は、無効なバイトシーケンスが削除されます。
戻り値(return)
String
指定された文字コードをUTF-8に変換した新しい文字列を返します。変換できない文字は削除されます。