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
>
>
>
>
>

Reply via email to