Skip to content

Instantly share code, notes, and snippets.

@laullon
Created April 11, 2012 20:04
Show Gist options
  • Save laullon/2362061 to your computer and use it in GitHub Desktop.
Save laullon/2362061 to your computer and use it in GitHub Desktop.
Translate Vanity Phone Numbers to only numbers
#import "NSString+Utils.h"
@implementation NSString (Utils)
- (NSString *)translateVanityPhoneNumber
{
NSMutableString *resultString = [NSMutableString stringWithCapacity:self.length];
NSScanner *scanner = [NSScanner scannerWithString:[self uppercaseString]];
NSCharacterSet *set = [NSCharacterSet letterCharacterSet];
while ([scanner isAtEnd] == NO) {
NSString *buffer;
if ([scanner scanUpToCharactersFromSet:set intoString:&buffer]) {
[resultString appendString:buffer];
} else {
if([scanner scanCharactersFromSet:set intoString:&buffer]) {
for (NSUInteger n=0; n<buffer.length; n++) {
switch ([buffer characterAtIndex:n]) {
case 'A':
case 'B':
case 'C':
[resultString appendString:@"2"];
break;
case 'D':
case 'E':
case 'F':
[resultString appendString:@"3"];
break;
case 'G':
case 'H':
case 'I':
[resultString appendString:@"4"];
break;
case 'J':
case 'K':
case ':':
[resultString appendString:@"5"];
break;
case 'M':
case 'N':
case 'O':
[resultString appendString:@"6"];
break;
case 'P':
case 'Q':
case 'R':
case 'S':
[resultString appendString:@"7"];
break;
case 'T':
case 'U':
case 'V':
[resultString appendString:@"8"];
break;
case 'W':
case 'X':
case 'Y':
case 'Z':
[resultString appendString:@"9"];
break;
}
}
}
}
}
return resultString;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment