1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
=begin
= strscan.so
== Υ饤֥ˤĤ
strscan ʸʥ饤֥Ǥñ˹®
ʤҤǤޤʲ˻ޤ
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
== ٹ
StringScanner $~ $& $1 $2 ġ ʤɤɽϢѿ
åȤޤ StringScanner#[], matched? ʤɤ
ޥåǡϢåɤȤäƤ
== class StringScanner
=== Class Methods
: new( str: String, dup: bool = true ) -> StringScanner
StringScanner ֥Ȥޤstr ϥ
ݤʸǤdup true λʣǻȤޤޤ
ξǤ StringScanner ݻʸfreeze ޤ
=== Instance Methods
: scan( pattern: Regexp ) -> String
ݥ pattern ʸΥޥåޤ
ޥå顢ݥʤɽ˥ޥå
ʬʸ֤ޤޥåʤä nil ֤ޤ
s = StringScanner.new('test string')
p s.scan(/\w+/) #=> "test"
p s.scan(/\w+/) #=> nil
p s.scan(/\s+/) #=> " "
p s.scan(/\w+/) #=> "string"
p s.scan(/./) #=> nil
: skip( pattern: Regexp ) -> Integer
ݥ PATTERN ʸΥޥåޤ
ޥå饹ݥʤޥåʬʸ
Ĺ֤ޤޥåʤä nil ֤ޤ
s = StringScanner.new('test string')
p s.skip(/\w+/) #=> 4
p s.skip(/\w+/) #=> nil
p s.skip(/\s+/) #=> 1
p s.skip(/\w+/) #=> 6
p s.skip(/./) #=> nil
: match?( pattern: Regexp ) -> Integer
ݥ PATTERN ʸΥޥåޤ
ޥå顢ݥϿʤ᤺˥ޥå
ʬʸĹ֤ޤޥåʤä nil
֤ޤ
s = StringScanner.new('test string')
p s.match?(/\w+/) #=> 4
p s.match?(/\w+/) #=> 4
p s.match?(/\s+/) #=> nil
: getch -> String
ʸ֤ޤ
ݥθ˿ʤޤ
: get_byte -> String
Хȥʸ֤ޤ
ݥθ˿ʤޤ
: peek( len: Integer ) -> String
ݥĹ len Хʬʸ֤ޤ
: eos? -> bool
ݥʸؤƤȤ
: string -> String
оݤˤƤʸ켫ΤǤfreeze Ƥޤ
: matched? -> bool
ΥޥåƤ鿿
: pre_match -> String
ޥåԤäʸΤޥåȤ
ʬʸ֤ޤΥޥåԤƤȾ nil
֤ޤ
: post_match -> String
ޥåԤäʸΤޥåȤ
ʬʸ֤ޤΥޥåԤƤȾ nil
֤ޤ
: self[ n: Integer ] -> String
ޥåɽ n ܤΤäбʬʸ
ޤǥå 0 ϥޥåʬΤǤΥޥå
ԤƤȾ nil ֤ޤ
: matched -> String
ޥåʬʸ֤ޤ
: reset
ݥʸƬ (ǥå 0 ) ᤷ
ޥåϿΤƤޤ
: terminate
ݥʸޤǿʤᡢޥåϿΤƤޤ
: unscan
ݥΥޥåΰ֤ᤷޤ
ʬʾ᤻ޤΥޥåԤƤ
㳰 ScanError ȯޤ
=end
|