See: https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L908
147 lines
6.9 KiB
Objective-C
147 lines
6.9 KiB
Objective-C
//
|
|
// NBPhoneNumberUtil.h
|
|
// libPhoneNumber
|
|
//
|
|
// Created by tabby on 2015. 2. 8..
|
|
// Copyright (c) 2015년 ohtalk.me. All rights reserved.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "NBPhoneNumberDefines.h"
|
|
|
|
@class NBPhoneMetaData, NBPhoneNumber;
|
|
|
|
@interface NBPhoneNumberUtil : NSObject
|
|
|
|
+ (NBPhoneNumberUtil *)sharedInstance;
|
|
|
|
@property(nonatomic, strong, readonly) NSDictionary *DIGIT_MAPPINGS;
|
|
|
|
// regular expressions
|
|
- (NSArray *)matchesByRegex:(NSString *)sourceString regex:(NSString *)pattern;
|
|
- (NSArray *)matchedStringByRegex:(NSString *)sourceString regex:(NSString *)pattern;
|
|
- (NSString *)replaceStringByRegex:(NSString *)sourceString
|
|
regex:(NSString *)pattern
|
|
withTemplate:(NSString *)templateString;
|
|
- (int)stringPositionByRegex:(NSString *)sourceString regex:(NSString *)pattern;
|
|
|
|
// libPhoneNumber Util functions
|
|
- (NSString *)convertAlphaCharactersInNumber:(NSString *)number;
|
|
|
|
- (NSString *)normalize:(NSString *)phoneNumber;
|
|
- (NSString *)normalizeDigitsOnly:(NSString *)number;
|
|
- (NSString *)normalizeDiallableCharsOnly:(NSString *)number;
|
|
|
|
- (BOOL)isNumberGeographical:(NBPhoneNumber *)phoneNumber;
|
|
|
|
- (NSString *)extractPossibleNumber:(NSString *)phoneNumber;
|
|
- (NSNumber *)extractCountryCode:(NSString *)fullNumber nationalNumber:(NSString **)nationalNumber;
|
|
#if TARGET_OS_IOS
|
|
- (NSString *)countryCodeByCarrier;
|
|
#endif
|
|
|
|
- (NSString *)getNddPrefixForRegion:(NSString *)regionCode stripNonDigits:(BOOL)stripNonDigits;
|
|
- (NSString *)getNationalSignificantNumber:(NBPhoneNumber *)phoneNumber;
|
|
|
|
- (NSArray *)getSupportedRegions;
|
|
|
|
- (NBEPhoneNumberType)getNumberType:(NBPhoneNumber *)phoneNumber;
|
|
|
|
- (NSNumber *)getCountryCodeForRegion:(NSString *)regionCode;
|
|
|
|
- (NSString *)getRegionCodeForCountryCode:(NSNumber *)countryCallingCode;
|
|
- (NSArray *)getRegionCodesForCountryCode:(NSNumber *)countryCallingCode;
|
|
- (NSString *)getRegionCodeForNumber:(NBPhoneNumber *)phoneNumber;
|
|
|
|
- (NBPhoneNumber *)getExampleNumber:(NSString *)regionCode error:(NSError **)error;
|
|
- (NBPhoneNumber *)getExampleNumberForType:(NSString *)regionCode
|
|
type:(NBEPhoneNumberType)type
|
|
error:(NSError **)error;
|
|
- (NBPhoneNumber *)getExampleNumberForNonGeoEntity:(NSNumber *)countryCallingCode
|
|
error:(NSError **)error;
|
|
|
|
- (BOOL)canBeInternationallyDialled:(NBPhoneNumber *)number error:(NSError **)error;
|
|
|
|
- (BOOL)truncateTooLongNumber:(NBPhoneNumber *)number;
|
|
|
|
- (BOOL)isValidNumber:(NBPhoneNumber *)number;
|
|
- (BOOL)isViablePhoneNumber:(NSString *)phoneNumber;
|
|
- (BOOL)isAlphaNumber:(NSString *)number;
|
|
- (BOOL)isValidNumberForRegion:(NBPhoneNumber *)number regionCode:(NSString *)regionCode;
|
|
- (BOOL)isNANPACountry:(NSString *)regionCode;
|
|
- (BOOL)isLeadingZeroPossible:(NSNumber *)countryCallingCode;
|
|
|
|
- (NBEValidationResult)isPossibleNumberWithReason:(NBPhoneNumber *)number error:(NSError **)error;
|
|
|
|
- (BOOL)isPossibleNumber:(NBPhoneNumber *)number;
|
|
- (BOOL)isPossibleNumber:(NBPhoneNumber *)number error:(NSError **)error;
|
|
- (BOOL)isPossibleNumberString:(NSString *)number
|
|
regionDialingFrom:(NSString *)regionDialingFrom
|
|
error:(NSError **)error;
|
|
|
|
- (NBEMatchType)isNumberMatch:(id)firstNumberIn second:(id)secondNumberIn error:(NSError **)error;
|
|
|
|
- (int)getLengthOfGeographicalAreaCode:(NBPhoneNumber *)phoneNumber error:(NSError **)error;
|
|
- (int)getLengthOfNationalDestinationCode:(NBPhoneNumber *)phoneNumber error:(NSError **)error;
|
|
|
|
- (BOOL)maybeStripNationalPrefixAndCarrierCode:(NSString **)numberStr
|
|
metadata:(NBPhoneMetaData *)metadata
|
|
carrierCode:(NSString **)carrierCode;
|
|
- (NBECountryCodeSource)maybeStripInternationalPrefixAndNormalize:(NSString **)numberStr
|
|
possibleIddPrefix:(NSString *)possibleIddPrefix;
|
|
|
|
- (NSNumber *)maybeExtractCountryCode:(NSString *)number
|
|
metadata:(NBPhoneMetaData *)defaultRegionMetadata
|
|
nationalNumber:(NSString **)nationalNumber
|
|
keepRawInput:(BOOL)keepRawInput
|
|
phoneNumber:(NBPhoneNumber **)phoneNumber
|
|
error:(NSError **)error;
|
|
|
|
- (NBPhoneNumber *)parse:(NSString *)numberToParse
|
|
defaultRegion:(NSString *)defaultRegion
|
|
error:(NSError **)error;
|
|
- (NBPhoneNumber *)parseAndKeepRawInput:(NSString *)numberToParse
|
|
defaultRegion:(NSString *)defaultRegion
|
|
error:(NSError **)error;
|
|
- (NBPhoneNumber *)parseWithPhoneCarrierRegion:(NSString *)numberToParse error:(NSError **)error;
|
|
|
|
- (NSString *)format:(NBPhoneNumber *)phoneNumber
|
|
numberFormat:(NBEPhoneNumberFormat)numberFormat
|
|
error:(NSError **)error;
|
|
- (NSString *)formatByPattern:(NBPhoneNumber *)number
|
|
numberFormat:(NBEPhoneNumberFormat)numberFormat
|
|
userDefinedFormats:(NSArray *)userDefinedFormats
|
|
error:(NSError **)error;
|
|
- (NSString *)formatNumberForMobileDialing:(NBPhoneNumber *)number
|
|
regionCallingFrom:(NSString *)regionCallingFrom
|
|
withFormatting:(BOOL)withFormatting
|
|
error:(NSError **)error;
|
|
- (NSString *)formatOutOfCountryCallingNumber:(NBPhoneNumber *)number
|
|
regionCallingFrom:(NSString *)regionCallingFrom
|
|
error:(NSError **)error;
|
|
- (NSString *)formatOutOfCountryKeepingAlphaChars:(NBPhoneNumber *)number
|
|
regionCallingFrom:(NSString *)regionCallingFrom
|
|
error:(NSError **)error;
|
|
- (NSString *)formatNationalNumberWithCarrierCode:(NBPhoneNumber *)number
|
|
carrierCode:(NSString *)carrierCode
|
|
error:(NSError **)error;
|
|
- (NSString *)formatInOriginalFormat:(NBPhoneNumber *)number
|
|
regionCallingFrom:(NSString *)regionCallingFrom
|
|
error:(NSError **)error;
|
|
- (NSString *)formatNationalNumberWithPreferredCarrierCode:(NBPhoneNumber *)number
|
|
fallbackCarrierCode:(NSString *)fallbackCarrierCode
|
|
error:(NSError **)error;
|
|
- (BOOL)formattingRuleHasFirstGroupOnly:(NSString *)nationalPrefixFormattingRule;
|
|
|
|
/**
|
|
* Returns the mobile token for the provided country calling code if it has one, otherwise
|
|
* returns an empty string. A mobile token is a number inserted before the area code when dialing
|
|
* a mobile number from that country from abroad.
|
|
*
|
|
* @param countryCallingCode the country calling code for which we want the mobile token.
|
|
* @return the mobile token, as a string, for the given country calling code.
|
|
*/
|
|
- (NSString *)getCountryMobileTokenFromCountryCode:(NSInteger)countryCallingCode;
|
|
|
|
@end
|