From: "Jesús Gabriel y Galán" Date: 2012-05-23T21:41:47+09:00 Subject: Re: How to replace a letter with a corresponding number On Wed, May 23, 2012 at 2:22 PM, Rich McMullen wrote: > I am working through the Ruby Quiz website and I am already stuck on > number 1 - Solitaire Cypher. > > I have a string, let's say "RUBYC ODEIS THEBE STXXX".  I need to convert > each letter to its corresponding number (i.e., A=1, B=2, etc.). > > I had hoped I could use gsub with a regexp like this: > > coded_text = text.gsub(/[A-Z/,[1-26]) > > but that doesn't work.  Any ideas? First of all you need to know if you have a formula to calculate the corresponding number or you need a mapping. In this case, each letter's ASCII value can be used: 1.9.2p290 :005 > "A".ord => 65 so for example, if you substract 64 from the ord of a char, you will get 1 for A, 2 for B, etc. Now for gsub to work you can use the block form, in which you will get the matched part of the string, and the result of the block is the replacement and try this: text.gsub(/[A-Z]/) {|m| m.ord - 64} 1.9.2p290 :007 > text = "ABCDE" => "ABCDE" 1.9.2p290 :008 > text.gsub(/[A-Z]/) {|m| m.ord - 64} => "12345" Hope this helps, Jesus.