Sha256: 3e038d7c2cdd2a28f8d1671bced34e29e7e9faadb9cd883703eb2ebb3a408208

Contents?: true

Size: 1.66 KB

Versions: 396

Compression:

Stored size: 1.66 KB

Contents

#import <Foundation/Foundation.h>
#import "PhoneNumberExample.h"

@interface PhoneNumber ()

@property (nonatomic,strong,readwrite) NSString *inputString;

@end

@implementation PhoneNumber

- (instancetype)initWithString:(NSString *)inputString {
  self = [super init];
  if (self) {
    self.inputString = inputString;
  }

  return self;
}

- (NSString *)number {
  NSString *cleanNumber = [self cleanNumber];
  if ([cleanNumber length] == 10) {
    return cleanNumber;
  } else if ([cleanNumber length] == 11 && [cleanNumber hasPrefix:@"1"]) {
    return [cleanNumber substringFromIndex:1];
  }
  return [self defaultInvalidPhoneNumber];

}

- (NSString *)cleanNumber {
  NSScanner *scanner = [NSScanner scannerWithString:self.inputString];
  NSCharacterSet *validChars = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
  NSMutableString *cleanNumber = [NSMutableString stringWithCapacity:self.inputString.length];

  while([scanner isAtEnd] == NO) {
    NSString *cleanDigit;
    if ([scanner scanCharactersFromSet:validChars intoString:&cleanDigit]) {
      [cleanNumber appendString:cleanDigit];
    } else {
      [scanner setScanLocation:([scanner scanLocation] + 1)];
    }
  }

  return cleanNumber;
}

- (NSString *)description {
  return [NSString stringWithFormat:@"(%@) %@-%@",[self areaCode],[self prefix],[self suffix]];
}

- (NSString *)areaCode {
  return [[self number] substringWithRange:NSMakeRange(0,3)];
}

- (NSString *)prefix {
  return [[self number] substringWithRange:NSMakeRange(3,3)];
}

- (NSString *)suffix {
  return [[self number] substringWithRange:NSMakeRange(6,4)];
}

- (NSString *)defaultInvalidPhoneNumber {
  return @"0000000000";
}


@end

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.179 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.178 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.177 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.176 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.175 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.174 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.173 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.172 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.171 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.170 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.169 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.167 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.166 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.165 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.164 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.163 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.162 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.161 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m
trackler-2.2.1.160 tracks/objective-c/exercises/phone-number/PhoneNumberExample.m