library scanf

[edit]

要約

String#scan のフォーマット指定版といえるメソッド String#scanf を定義します。

組み込みクラス StringIO を拡張します。

require 'scanf'

p "a 10  1.2".            scanf("%s %d %f")   # => ["a", 10, 1.2]
p "a 10  1.2 b 20 1.5e10".scanf("%s %d %f")   # => ["a", 10, 1.2]
p "a 10  1.2 b 20 1.5e10".scanf("%s %d %f") {|*v| v}
                # => [["a", 10, 1.2], ["b", 20, 15000000000.0]]

p "a 10  1.2 b 20 1.5e10 c".scanf("%s %d %f") {|*v| v}
               # => [["a", 10, 1.2], ["b", 20, 15000000000.0], [["c"]]]

                                                     #    [["c"]] (?)

require 'scanf'
p "a, 10, 1.2".scanf("%s,%d,%f")
# => ["a,"]      %s が "," を飲み込むからダメらしい

p "a, 10, 1.2".scanf("%1s,%d,%f")
# => ["a", 10, 1.2]

p "a, 10, 1.2".scanf("%[^,],%d,%f")
# => ["a", 10, 1.2]

クラス

Scanf::FormatSpecifier
Scanf::FormatString

モジュール

Scanf

scanf ライブラリで使用する名前空間です。

追加・再定義されるメソッド

IO#scanf Kernel#scanf String#scanf