エクセルとかは面倒なので、エディタを使ってノート感覚で簡単につけることにする。こんな感じ。括弧内はコメントで、無視される。半角スペース、改行なども無視される。
201509.kakei
@9/28 -本=3139 <カルコス> -缶コーヒー=151 <コンビニ> @9/30 -hoge=1000 -たこ焼き=350 -アイス<抹茶>=100
Ruby で処理してこんな感じ。
9/28 3290円 9/30 1450円 合計4740円
# encoding:Shift_JIS class Kakeibo def sum s = 0 get_month_data.each do |day| daysum = 0 day[1].each {|data| daysum += data[1].to_i} puts "#{day[0][0]}/#{day[0][1]} #{daysum}円" s += daysum end puts "合計#{s}円" end private def get_month_data text = File.read('201509.kakei').gsub(/\s/, "").gsub(/<[^>]*>/, "") getmonth(text) end def getmonth(text) month = [] text.split(/@/).each do |nd| next if nd.empty? day = []; obj = [] a = nd.split(/-/) day << a.shift.split(%r|/|) a.each {|data| obj << data.split(/=/)} day << obj; month << day end month end end Kakeibo.new.sum
getmonth
メソッドの返り値(Array)はこんな感じ。
[ [["9", "28"], [ ["本", "3139"], ["缶コーヒー", "151"] ]], [["9", "30"], [ ["hoge", "1000"], ["たこ焼き", "350"], ["アイス", "100"] ]] ]