以下是图书馆的工作方式:
let phoneUtil = NBPhoneNumberUtil()let phoneNumberConverted = try phoneUtil.parse("0665268242",defaultRegion: "FR") // So I don't kNow the country of the user hereprint(try? phoneUtil.format(phoneNumberConverted,numberFormat: NBEPhoneNumberFormat.INTERNATIONAL))解决方法 formattedPhoneNumberSubstring接受部分电话号码字符串并将其格式化为格式正确的国际号码的开头,例如“16463”变为“1 646-3”.
Nsstring *formattedPhoneNumberSubstring(Nsstring *phoneNumber) {NBPhoneNumberUtil *phoneUtil = [NBPhoneNumberUtil sharedInstance];phoneNumber = [phoneUtil normalizeDigitsOnly:phoneNumber];Nsstring *nationalNumber;NSNumber *countryCode = [phoneUtil extractCountryCode:phoneNumber nationalNumber:&nationalNumber];if ([countryCode isEqualToNumber:@0]) return phoneNumber;Nsstring *regionCode = [[phoneUtil regionCodeFromCountryCode:countryCode] objectAtIndex:0];Nsstring *paddednationalNumber = [nationalNumber stringBypaddingTolength:15 withString:@"0" startingAtIndex:0];Nsstring *formatted;Nsstring *formattedSubstr;for (int i=0; i < paddednationalNumber.length; i++) { NSError *error = nil; formattedSubstr = [phoneUtil format:[phoneUtil parse:[paddednationalNumber substringToIndex:i] defaultRegion:regionCode error:&error] numberFormat:NBEPhoneNumberFormatINTERNATIONAL error:&error]; if (getExtraCharacters(formattedSubstr) > getExtraCharacters(formatted)) // extra characters means more formatted formatted = formattedSubstr;}// Preparing the buffer for phoneNumberunichar phoneNumberBuffer[phoneNumber.length+1];[phoneNumber getCharacters:phoneNumberBuffer range:NSMakeRange(0,phoneNumber.length)];// Preparing the buffer for formattedunichar formattedBuffer[formatted.length+1];[formatted getCharacters:formattedBuffer range:NSMakeRange(0,formatted.length)];int j=0;for(int i = 0; i < phoneNumber.length && j < formatted.length; i++) { while(formattedBuffer[j] != phoneNumberBuffer[i]) j++; j++;}return [formatted substringToIndex:j];
}
总结以上是内存溢出为你收集整理的iOS将电话号码转换为国际格式全部内容,希望文章能够帮你解决iOS将电话号码转换为国际格式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)