小西 弘将です。 > >松崎と申します。 > >ruby 1.8.2 を使っております。 > >タブ区切りテキストで与えられるデータを解釈しようとしているのですが、 >フィールドの数が不定の場合、 > >例: > array = line.chomp.split("\t") > float = array.shift.to_f > int = array.shift.to_i > str = array.shift.sub(/^XX/, '') > : > : floatとかにnilを入れる方法は、ほかの方が答えてられるので・・ 単に、足りないレコードを満足させるのであれば N = 3 #レコード数 array = line.chomp.split("\t") array.fill("",(array.size)..(N-1)) float = array.shift.to_f int = array.shift.to_i str = array.shift.sub(/^XX/, '') : : ブランクレコードをnilとするのであれば N = 3 #レコード数 def my_split( text, splitter, size ) array = text.split(splitter) array.fill("",(array.size)..(size-1)).map!{ |i| i=="" ? nil : i } end array = my_split( line.chomp, "\t", N ) float = array.shift.to_f int = array.shift.to_i str = array.shift.sub(/^XX/, '') : : といった感じでしょうか。 split(sep,limit)で分割最大個数を決めることはできるのですが、いつも同じ個 数に分割できないんですよね。 split(sep,size,fill)で分割数固定とか導入できないのかな あと、Arrayのリサイズがあるといいなと思ったりします。