From: 7stud -- Date: 2007-10-26T03:15:44+09:00 Subject: Re: Change a string to an integer, report an error if the string does not represent an integer? 7stud -- wrote: > 7stud -- wrote: >> str.each_byte do |char| >> if start >> start = false >> if char == ?+ or char == ?- >> next >> end >> end >> >> if char < ?0 or char > ?9 >> return false >> end >> end >> >> return true >> end >> >> strings = ['0013abc', '0025', '-0030', '+051', '00-1', '-abc72'] >> strings.each do |str| >> if valid_int?(str) >> puts str.to_i >> else >> puts 'invalid int' >> end >> end > > > --output:-- > invalid int > 25 > -30 > 51 > invalid int > invalid int Ugh. This is much faster: strings = ['0013abc', '0025', '-0030', '+051', '00-1', '-abc72'] strings.each do |str| if str.match(/^(\-|\+)?\d+$/) puts str.to_i else puts "invalid int" end end -- Posted via http://www.ruby-forum.com/.