iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iOS将电话号码转换为国际格式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_197_0@
@H_197_0@
在我的iOS应用程序中,我必须转换电话号码(在联系人中拍摄)并以国际格式转换(使用外部库自动发送短信).我看到 libPhoneNumber,但问题是我们必须输入国家代码,应用程序必须在所有(几乎)国家/地区工作,所以我不知道用户的国家/地区是什么.

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

let phoneUtil = NBPhonenumberUtil()
let phonenumberConverted = try phoneUtil.parse("0665268242",defaultRegion: "FR") // So I don't kNow the country of the user here
print(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 phonenumber
unichar phonenumberBuffer[phonenumber.length+1];
[phonenumber getCharacters:phonenumberBuffer range:NsmakeRange(0,phonenumber.length)];

// Preparing the buffer for formatted
unichar 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];

}

@H_197_0@

大佬总结

以上是大佬教程为你收集整理的iOS将电话号码转换为国际格式全部内容,希望文章能够帮你解决iOS将电话号码转换为国际格式所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:ios国际格式电话号码转换
猜你在找的iOS相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap