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

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

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

作成日: 更新日:

基本的な使い方

peekメソッドは、StringScannerオブジェクトの現在のスキャン位置から、指定された長さの文字列を「覗き見る」ことを実行するメソッドです。このメソッドの最大の目的は、実際に文字列をスキャンして現在のスキャン位置(ポインタ)を移動させることなく、次にスキャンされるはずの文字列の内容を事前に確認することにあります。

引数として整数lengthを指定することで、現在のスキャン位置からlength文字分だけ文字列を読み込み、その部分文字列を返します。たとえば、peek(5)と呼び出すと、現在の位置から5文字分の文字列が返されます。引数を省略した場合、現在のスキャン位置から文字列の終端までの全ての文字列を覗き見ることができます。

もし現在のスキャン位置から、指定されたlength分の文字列が存在しない場合、このメソッドはnilを返します。これは、文字列の終端に達しているか、残り文字数が指定長よりも短い場合に発生します。

このメソッドは、次に続く文字列が特定のパターンと一致するかどうかを事前に確認したいが、まだその文字列を消費したくない(スキャン位置を移動させたくない)場合に非常に役立ちます。例えば、条件によって異なるスキャン処理を行いたい場合や、次のトークンが何かを判別してから実際のスキャンを行う場合に利用できます。peekメソッドを使うことで、StringScannerオブジェクトの状態を維持したまま、効率的に文字列の先読みを行うことが可能になります。

構文(syntax)

1require 'strscan'
2
3scanner = StringScanner.new("This is a test string.")
4result = scanner.peek(4)

引数(parameters)

req

  • req: 検索する文字列を指定します。省略した場合、nilが指定されたとみなされ、常にnilを返します。

戻り値(return)

String

現在位置から、指定されたバイト数(length)の文字列を返します。 文字列の末尾を超えて読み込もうとした場合は、末尾までの部分文字列を返します。

関連コンテンツ

関連プログラミング言語