You can also try the translation operator: tr/A-Za-z/2223334445556667777888999922233344455566677778889999/ ;
Sergio On Thu, Aug 13, 2009 at 2:24 PM, Michael Running Wolf < michaelrunningw...@att.net> wrote: > This is a *blended* solution, combining the best of hashes (direct lookup) > and substitutions. Of course, you'll need to take care of upper- and > lower-case keys in the hash. > > 1 while s/ ([a-z]) / $alpha2num{$1} /iex; > > Aside: It's always been a pet peeve of mine that many contact managers > don't let me store alpha characters, so if this is a "real world" > application, I'd suggest storing it how the user entered it, then having a > separate standardization operation that could be called as needed. If it > were an address book, I'd suggest displaying *both* the raw and standard > forms, allowing the user to edit the raw form, and disabling the normaized > form if there are no alphabeticals in the raw form. > > For example, something like this. > > Raw (user editable) (optional normalization) > 800-69-VORTEX -> 800-698-6783 > 800-EAT-AT-THE-Y -> 800-328- > 800-555-1212 > > I like this because I like *both*. I like to remember the alphanum, and > dial the numeric. I don't like interfaces that remove one of the parts that > I like. > > And alternative solution, if screen real estate is at a premium, would be > to have a onMouseOver event change the displayed text. That allows me to > store alphanumerics, but translate to numerics at my will. > > > On Aug 13, 2009, at 9:58 AM, andy_b...@wiwb.uscourts.gov wrote: > > Seems like this could be fun/golf >> >> ----- Forwarded by Andy Bach/WIWB/07/USCOURTS on 08/13/2009 11:57 AM ----- >> >> >> I am using Active Perl 5.8.8. and Perl Dev Kit 7.0. >> >> I'm writing some code that standardizes the format of phone numbers in a >> database because users have entered them in every way imaginable. >> >> Anyway, some of the phone numbers look like this: >> >> 800-69-VORTEX >> >> ...where the user has entered alpha characters instead of numbers. My >> first thought was to use a hash to do the translation, like this: >> >> %alpha2num = >> ( >> 'A' => '2', >> 'B' => '2', >> 'C' => '2', >> 'D' => '3', >> . >> . >> . >> >> ...but since the rest of the routine uses only regular expressions, I >> thought that it would be nice if this type of translation could be >> accomplished with a regex. >> >> I have not been able to think of a way, but I thought I would put it to >> the list to see if anyone else has done this before. >> >> Barry Brevik >> _______________________________________________ >> ActivePerl mailing list >> activep...@listserv.activestate.com >> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs >> >> > -- > Please take note of the changes: > Old: Michael Running Wolf <michaelrunningw...@att.net > New: Michael R. Wolf <michaelrw...@att.net > > > > >