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