2010年
8月
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

セットアップ日記


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
括弧の中を、その後に続く数倍して、括弧を取り除くことができる。これを式量計算のスクリプトで処理すれば、括弧付きの化学式でも、式量を計算できることになる。
[]