それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Rubyで文字列をテンプレートの出力と見なして定型フォーマットされ文字列から値を取出す方法

定型文字列から,数字を抜き出したい時がある。

降水確率0%
降水確率90% 

このように定型フォーマットで出力の文字列は山ほどアル

フォーマットを見つける

降水確率NN%

と見なして、数字だけを取出すことは可能.

SCANFを使います

とても簡単で出来ます.いくつか方法はあります.正規表現を持ち出すまでもありません.

require 'scanf'

実例

require "scanf"
>> "降水確率0%".scanf "降水確率%d\\%"
=> [0]
>> "降水確率12%".scanf "降水確率%d\%"
=> [12]
>> "降水確率123%".scanf "降水確率%d\%"
=> [123]

簡単ですね.いちいち正規表現考えるより早いよ.定型文の処理は楽です.とても

仕事で使われている文字列のパーサーを作ってる時間がもったいないよ。

注意点

次のフォーマットには強い

文字列+数字+文字列

工夫が必要

文字列+区切り文字+文字列

のようなフォーマットだと工夫が必要

フォーマット文字を扱う

空白
>space
>
> フォーマット中の空白は(0個を含む)任意の数の空白にマッチします。 
>  p "a           10".scanf("%s %d")  # => ["a", 10]
>  p "a10".scanf("%1s %d")            # => ["a", 10]

> % そのもの

>%%

scanf は正規表現も使える

正規表現でも使えます.


結構万能でパターン文字列抽出には強いのです.

参考

ruby マニュアル