Re: Help with regex

[email protected] (Michael Running Wolf) Thu, 13 Aug 2009 11:24:57 -0700
Newsgroups perl.fwp
Message-ID <[email protected]>
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, [email protected] 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
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>

-- 
Please take note of the changes:
   Old: Michael Running Wolf <[email protected]
   New: Michael R. Wolf <[email protected]