【Ruby3.x】String::scrub!()メソッドの使い方
scrub!メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
scrub!メソッドは、文字列中の不正なバイトシーケンス(エンコーディングエラーを引き起こす文字)を置換して修正するメソッドです。このメソッドは、データベースや外部ファイル、ネットワーク通信など、様々なソースから文字列データを受け取った際に、予期せぬ文字エンコーディングの不一致によって発生する問題を解決するために使用されます。
具体的には、scrub!メソッドは、文字列が現在のエンコーディングで認識できない文字や、不完全な文字シーケンスを発見した場合に、それらを指定された置換文字に置き換えます。引数を指定しない場合、デフォルトではUnicodeのU+FFFD(REPLACEMENT CHARACTER、代替文字)に置き換わります。例えば、Webページからの入力データに、サイトのエンコーディングと異なる文字セットの文字が含まれている場合などに、文字化けを防ぎながらデータを処理するために有効です。
このメソッドは、名前の末尾に!が付いていることからもわかるように、破壊的な操作を行います。つまり、メソッドを呼び出した元の文字列オブジェクト自身を直接変更します。もし元の文字列を変更せずに、修正された新しい文字列を返したい場合は、非破壊版のscrubメソッドを使用してください。scrub!メソッドを活用することで、不正な文字データによるアプリケーションの予期せぬエラーを防ぎ、より堅牢なシステムを構築するのに役立ちます。
構文(syntax)
1s = "不正な\xE3文字列".force_encoding("UTF-8") 2s.scrub! 3puts s
引数(parameters)
repl = nil
- repl = nil: 置換文字列を指定します。nil の場合は、使用されない文字が削除されます。
戻り値(return)
String
nil を返します。