« 思いつきでヘンテコな演算子を定義してみた。evalを利用した危険(?)な実装だ。 | トップページ | マジックトラックパッドを使い始めて2ヶ月。慣れたらこっちの方が全然いいや。相当いい。 »

evalを直接呼ぶのもかっこわるいので、Stringクラスのメンバー関数にしてみた。メンバー関数ってのはC++用語だな。

=begin
 思いつきでヘンテコな演算子を定義してみた。
 evalを利用した危険(?)な実装だ。
 StringクラスとArrayクラスに以下のような演算子を追加定義してやると
 CSVチックなデータをややこしい処理なしに配列として読み込ませることが可能。
 CSVチックなデータのセパレータが『,(カンマ)』だと『,(カンマ)』な演算子は
 定義できないので、『|』とか『/』とかを使うことになる。
 意外に便利かも。
 evalを直接呼ぶのもかっこわるいので、Stringクラスの
 メンバー関数にしてみた。メンバー関数ってのはC++用語だな。
=end

class Array
  def |(a)
    self.push(a)
    self
  end
end

class String
  def |(a)
    [self,a]
  end
  def csv2array
    wRet=eval(self)
    wRet
  end
end


if __FILE__==$0
  require "kconv"


  #CSVのようにセパレートされた文字を配列にする
  puts %Q("Umetaro|Saitani"|"1000"|"2010|0930"|"05:00:01"|"23:00:12").csv2array

  DATA.read.each do |i|
    puts "------------------------"
    wRet=i.csv2array
    wRet.each_with_index do |j, index|
      puts %Q(#{index}:#{j.tosjis})
    end
  end
end

=begin 出力結果
Umetaro|Saitani
1000
2010|0930
05:00:01
23:00:12
------------------------
0:氏    名
1:社員番号
2:日付
3:出勤時間
4:退勤時間
------------------------
0:坂本龍馬
1:1000
2:2010/09/30
3:05:00:01
4:23:00:12
------------------------
0:木戸孝允
1:1001
2:2010/09/30
3:04:12:31
4:23:10:10
------------------------
0:西郷隆盛
1:1002
2:2010/09/30
3:06:00:00
4:21:12:31
------------------------
0:ドラえもん
1:1003
2:2010/09/30
3:08:01:00
4:17:00:01
=end

__END__
"氏    名"  | "社員番号" | "日付"       | "出勤時間" | "退勤時間"
"坂本龍馬"  | "1000"     | "2010/09/30" | "05:00:01" | "23:00:12"
"木戸孝允"  | "1001"     | "2010/09/30" | "04:12:31" | "23:10:10"
"西郷隆盛"  | "1002"     | "2010/09/30" | "06:00:00" | "21:12:31"
"ドラえもん"| "1003"     | "2010/09/30" | "08:01:00" | "17:00:01"

« 思いつきでヘンテコな演算子を定義してみた。evalを利用した危険(?)な実装だ。 | トップページ | マジックトラックパッドを使い始めて2ヶ月。慣れたらこっちの方が全然いいや。相当いい。 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/561999/49614649

この記事へのトラックバック一覧です: evalを直接呼ぶのもかっこわるいので、Stringクラスのメンバー関数にしてみた。メンバー関数ってのはC++用語だな。:

« 思いつきでヘンテコな演算子を定義してみた。evalを利用した危険(?)な実装だ。 | トップページ | マジックトラックパッドを使い始めて2ヶ月。慣れたらこっちの方が全然いいや。相当いい。 »

2013年12月
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        

最近の記事

最近のコメント

最近のトラックバック

無料ブログはココログ