Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > strscanライブラリ > StringScannerクラス > matched_size
matched_size -> Integer | nil
[permalink][rdoc]前回マッチした部分文字列の長さを返します。前回マッチに失敗していたら nil を返します。
マッチしたサイズは文字単位でなくバイト単位となります。
require 'strscan'
def run(encode)
utf8 = "\u{308B 3073 3044}" # るびい
s = StringScanner.new(utf8.encode(encode))
s.scan(/#{"\u{308B}".encode(encode)}/)
s.matched_size
end
p run("UTF-8") #=> 3
p run("EUC-JP") #=> 2
p run("Shift_Jis") #=> 2
require 'strscan'
s = StringScanner.new('test string')
s.matched_size # => nil
s.scan(/\w+/) # => "test"
s.matched_size # => 4
s.scan(/\w+/) # => nil
s.matched_size # => nil