Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】String::each_codepoint()メソッドの使い方

each_codepointメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

each_codepointメソッドはStringクラスのインスタンスに対して、文字列内の各文字をUnicodeのコードポイント(整数値)として順に処理を実行するメソッドです。

このメソッドは、文字列が持つ各文字を、その文字に対応するUnicodeの整数値(コードポイント)として一つずつ取り出す機能を提供します。コードポイントとは、世界中の文字をコンピュータで扱うための国際的な文字コードであるUnicodeにおいて、各文字に割り当てられた固有の整数値のことです。これにより、日本語のようなマルチバイト文字であっても、その文字の内部的なバイト表現に依存せず、正確に「1文字」として認識し、処理できます。

each_codepointメソッドにブロックが与えられた場合、文字列内の各コードポイントが順番にそのブロックの引数として渡され、ブロックが実行されます。すべてのコードポイントが処理された後、元の文字列自身が返り値として得られます。

一方、ブロックが省略された場合は、Enumeratorオブジェクトが返されます。このEnumeratorオブジェクトを利用することで、コードポイントのシーケンスを、必要に応じて遅延評価で繰り返し処理することが可能になります。これは、例えばmapselectなどのメソッドと組み合わせて、コードポイントを基にした新たな配列を生成するような場面で活用できます。

each_codepointは、Stringクラスが提供する他のイテレータであるeach_char(文字そのものを文字列として扱う)やeach_byte(文字を構成するバイト単位で扱う)とは異なり、文字の論理的な意味であるコードポイントに着目して処理を進めます。そのため、文字列の文字コードの内部表現に影響されずに、真の文字単位での処理や、文字のUnicode値に基づいた高度な操作を行いたい場合に非常に役立ちます。

構文(syntax)

1"文字列".each_codepoint do |codepoint|
2  # codepoint は各文字のUnicodeコードポイント(整数)
3  puts codepoint
4end

引数(parameters)

引数なし

引数はありません

戻り値(return)

self または Enumerator

このメソッドは、文字列を構成する各Unicodeコードポイントをブロックに渡して処理するか、イテレータを返します。ブロックが与えられない場合は、各コードポイントを順に生成するEnumeratorオブジェクトを返します。

関連コンテンツ

関連プログラミング言語