【Ruby3.x】StringScanner::peep()メソッドの使い方
peepメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
peepメソッドは、StringScannerオブジェクトが保持する文字列の現在のスキャン位置から、指定されたバイト数の文字列を「覗き見」するメソッドです。このメソッドの最も重要な特徴は、文字列を読み取るだけで、StringScannerオブジェクトの内部的なスキャン位置(ポインタ)を一切移動させない点です。これにより、現在のスキャン位置を保持したまま、次に続く文字列の内容を事前に確認することができます。
引数には、覗き見したいバイト数を整数で指定します。この引数を省略した場合、デフォルトで1バイトの文字列を覗き見します。例えば、scanner.peep(5)と呼び出すと、現在のスキャン位置から5バイト分の文字列を取得します。もし、現在のスキャン位置から指定されたバイト数分の文字列が終端を超えている場合でも、エラーにはならず、スキャン可能な範囲の文字列が返されます。
このメソッドは、次に処理する文字列が特定の前置詞や記号であるかを確認したり、複数の候補の中から適切な処理を選択したりする際に非常に役立ちます。スキャン位置を動かさずに文字列の内容を先読みできるため、条件分岐の判断材料として利用し、その後の具体的なスキャン操作を行う前段階で安全に情報を取得することができます。戻り値は、覗き見した文字列そのものです。
構文(syntax)
1require 'strscan' 2 3scanner = StringScanner.new("Hello Ruby world!") 4scanner.scan(/Hello /) # スキャン位置は "Ruby" の 'R' の前 5substring = scanner.peep(4) # 現在位置から4バイトを読み取る ("Ruby") が、スキャン位置は移動しない
引数(parameters)
length
- length: スキャンする文字数を指定する整数
戻り値(return)
String or nil
現在のスキャン位置から指定されたバイト数だけ文字を読み取ります。スキャン位置を移動させずに、読み取った文字列を返します。文字列の末尾を超えた場合は nil を返します。