type=class
superclass=Object
included=
extended=
library=strscan

StringScanner ʸ󥹥ʥ饹Ǥ
ñ˹®ʥʤ򵭽ҤǤޤ

    s = StringScanner.new('This is an example string')
    s.eos?            #=> false

    p s.scan(/\w+/)   #=> "This"
    p s.scan(/\w+/)   #=> nil
    p s.scan(/\s+/)   #=> " "
    p s.scan(/\s+/)   #=> nil
    p s.scan(/\w+/)   #=> "is"
    s.eos?            #=> false

    p s.scan(/\s+/)   #=> " "
    p s.scan(/\w+/)   #=> "an"
    p s.scan(/\s+/)   #=> " "
    p s.scan(/\w+/)   #=> "example"
    p s.scan(/\s+/)   #=> " "
    p s.scan(/\w+/)   #=> "string"
    s.eos?            #=> true

    p s.scan(/\s+/)   #=> nil
    p s.scan(/\w+/)   #=> nil

StringScanner ֥Ȥϥ󤹤ʸȡ֥ݥ󥿡פΥåȤǤ
ݥ󥿤Ȥϥ󤷤äȤ򼨤ǥåΤȤǤ
֥Ⱥľˤϥݥ󥿤ʸƬˤꡢ
ǤΤߥޥåޤޥå餽θ˥ݥ󥿤ʤޤ

    ## a string and a scan pointer   ("_" = scan pointer)

    s = StringScanner.new('This is an example string')
    _This is an example string     s.eos? = false
    s.scan(/\w+/)
    This_ is an example string     s.eos? = false
    s.scan(/\s+/)
    This _is an example string     s.eos? = false
    s.scan(/\w+/)
    This is_ an example string     s.eos? = false
    s.scan(/\s+/)
    This is _an example string     s.eos? = false
    s.scan(/\w+/)
    This is an_ example string     s.eos? = false
    s.scan(/\s+/)
    This is an _example string     s.eos? = false
    s.scan(/\w+/)
    This is an example_ string     s.eos? = false
    s.scan(/\s+/)
    This is an example _string     s.eos? = false
    s.scan(/\w+/)
    This is an example string_     s.eos? = true


ߤΥݥ󥿤ʳǤޥåϡ[[m:StringScanner#scan_until]]ʤ
ȤäƤ

: scan, scan_full ưΰ㤤

  def case1
    s = StringScanner.new('test string')
    p s.scan(/t/)       #=> "t"
    p s.scan(/\w+/)     #=> "est"
    p s.scan(/string/)  #=> nil
    p s.scan(/\s+/)     #=> " "
    p s.scan(/string/)  #=> "string"
  end
  
  def case2
    s = StringScanner.new('test string')
    p s.scan_until(/t/)       #=> "t"
    p s.scan_until(/\w+/)     #=> "est"
    p s.scan_until(/string/)  #=> " string"
    p s.scan_until(/\s+/)     #=> nil
    p s.scan_until(/string/)  #=> nil
  end
  
  p "case1"
  case1
  p "case2"
  case2

ݥ󥿤ΰ֤ʸñ̤ǤʤХñ̤Ȥʤޤ

      # vim:set fileencoding=euc-jp:
      require 'strscan'
      s = StringScanner.new("Ӥ") # ʸɤEUC-JPȤޤ
      p s.exist?(//) #=> 4

StringScanner  $~ $& $1 $2 ġ ʤɤɽϢѿ
åȤޤ [[m:StringScanner#[] ]], [[m:StringScanner#matched?]] ʤɤ
ޥåǡϢ᥽åɤȤäƤ
