iOS将电话号码转换为国际格式

iOS将电话号码转换为国际格式,第1张

概述在我的iOS应用程序中,我必须转换电话号码(在联系人中拍摄)并以国际格式转换(使用外部库自动发送短信).我看到 libPhoneNumber,但问题是我们必须输入国家代码,应用程序必须在所有(几乎)国家/地区工作,所以我不知道用户的国家/地区是什么. 以下是图书馆的工作方式: let phoneUtil = NBPhoneNumberUtil()let phoneNumberConverted 在我的iOS应用程序中,我必须转换电话号码(在联系人中拍摄)并以国际格式转换(使用外部库自动发送短信).我看到 libPhoneNumber,但问题是我们必须输入国家代码,应用程序必须在所有(几乎)国家/地区工作,所以我不知道用户的国家/地区是什么.

以下是图书馆的工作方式:

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将电话号码转换为国际格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1028553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存