Ruby 4.0 リファレンスマニュアル

instance method StringScanner#scan_integer

scan_integer(base: 10) -> Integer | nilRuby 3.4 から[permalink][rdoc][edit]

スキャンポインタの地点から整数をスキャンし、Integer に変換して返します。マッチしなかった場合は nil を返します。

base を省略した場合や 10 を指定した場合は /[+-]?\d+/ にマッチする部分をスキャンします。base に 16 を指定した場合は /[+-]?(0x)?[0-9a-fA-F]+/ にマッチする部分をスキャンします。

[PARAM] base:
スキャンする整数の基数を指定します。10 または 16 を指定できます。
[EXCEPTION] ArgumentError:
base に 10, 16 以外を指定すると発生します。
[EXCEPTION] Encoding::CompatibilityError:
スキャン対象の文字列が ASCII 互換でないエンコーディングのとき発生します。
require 'strscan'

s = StringScanner.new('42end')
p s.scan_integer         # => 42
p s.rest                 # => "end"

s = StringScanner.new('-3')
p s.scan_integer         # => -3

s = StringScanner.new('abc')
p s.scan_integer         # => nil
例: 16 進数
require 'strscan'

s = StringScanner.new('0x1fg')
p s.scan_integer(base: 16)   # => 31
p s.rest                     # => "g"

[SEE_ALSO] StringScanner#scan, StringScanner#scan_byte