【Ruby3.x】StringScanner::[]()メソッドの使い方
[]メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
[]メソッドは、StringScannerオブジェクトが内部に持つスキャン対象の文字列から、指定された位置や範囲の部分文字列を取得するメソッドです。
このメソッドは、引数として整数またはRangeオブジェクトを受け取ります。引数が整数で指定された場合、そのインデックス位置にある1文字を返します。文字列の最初の文字のインデックスは0で、負のインデックスを指定すると文字列の末尾から数えます。指定されたインデックスが文字列の範囲外である場合は、nilが返されます。
引数がRangeオブジェクトで指定された場合、その範囲に対応する部分文字列を返します。例えば、0..2のように指定すると、最初の3文字が取得されます。Rangeが文字列の範囲を一部または全て超えていても、取得可能な範囲で部分文字列が返されます。特に、Rangeの開始位置が文字列の長さ以上の場合には、空文字列が返されます。
この[]メソッドは、StringScannerオブジェクトが現在スキャンしている位置(ポインタ)を移動させることはありません。そのため、文字列スキャンの進行とは独立して、元の文字列の内容を確認したり、特定の部分を直接参照したりする際に利用されます。例えば、スキャン中に特定の条件が満たされたときに、対象文字列全体の別の場所にある情報を取得したい場合などに便利です。
構文(syntax)
1require 'strscan' 2 3scanner = StringScanner.new("hello world") 4scanner.scan(/(\w+)\s(\w+)/) 5puts scanner[1]
引数(parameters)
n
- n: StringScannerオブジェクトから取得する文字列の開始位置を指定する整数。指定しない場合、現在のスキャン位置から取得します。
戻り値(return)
String or nil
指定された正規表現にマッチした文字列を返します。マッチしなかった場合は nil を返します。