From: dblack@... Date: 2007-07-06T08:12:26+09:00 Subject: Re: how to convert string into number Hi -- On Fri, 6 Jul 2007, Guest wrote: > Hi all, > > I read several rows of numbers and split each row into an array. I get > an array of array. By default Ruby treat each number as a string. I want > to convert each string into a number. The only way I can think of is to > loop through the old array of array, change each element in each row > using #to_f and put them back into a new array. It is not efficient. > What other options might be better? > > Thanks, > > Li > > # file format > > 1 100 33 32 > 2 500 33 20 You could do: require 'scanf' File.open("filename") do |fh| fh.scanf("%f%f%f%f") {|n| n } end The point of the {|n| n} is to force a capture of each set of numbers, using the block form of scanf. If you're not sure how many numbers are on each line, you'd have to do a little more work but scanf might still be a good option. David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)