2010年08月17日 rubyで化学式の続き
_ 括弧付きの化学式の処理
scanはこれまであまり使ったことが無いmethodだったが、なかなか便利そうである。これを使えば、括弧付きの化学式を簡単に扱えるのではと思って、scriptを書いてみた。def bracket(fml) while fml=~/^(.*)\(([^\)]*)\)([\d\.]*)(.*)$/ head=$1 inside=$2 number=$3.to_f tail=$4 inside.scan((/([A-Z][a-z]?)([\d\.]*)/)){|s| s[1]=1 if s[1]=="" head+=s[0]+(s[1].to_f*number).to_s } fml=head+tail end fml end括弧の中を、その後に続く数倍して、括弧を取り除くことができる。これを式量計算のスクリプトで処理すれば、括弧付きの化学式でも、式量を計算できることになる。