这是一个普遍的问题,但对我和Android有特别的影响:给定一个用户和一个电话号码,我如何规范化该电话号码才能真正用于存储和拨号?用户可以在表单的地址簿中输入电话号码:
我知道用户提交此号码的事项:
这似乎是一个棘手的问题 - 我绝对不想要求用户提供更多信息,除非我真的需要,但这些数据需要非常值得信赖。我可以在这里重复使用最佳实践吗?
答案 0 :(得分:0)
<强> IOS 强>
好的,这可能对你很有帮助。我们希望如此。
在我的应用程序中,我需要 - 以某种方式从联系人处获取电话号码。所以问题就在于你所解释的 - 可以使用各种 - *()字符,以及没有国家代码。
所以 - 我使用ABPeoplePickerNavigationController
获取联系电话号码并使用函数来获取数字真实数字和可能的国家/地区代码:
- (void)saveContactPhone:(NSString *) mContactPhone
{
if(mContactPhone && [mContactPhone length])
{
if ([mContactPhone rangeOfString:@"+"].location != NSNotFound)//this means number includes country code.
{
NSString * mCCodeString = @"";
BOOL mFound = FALSE;
for(int i = 0; i<[mContactPhone length]; i++) // check number for any obvious country code.
{
if(mFound == TRUE)
{
break;
}
mCCodeString = [mContactPhone substringToIndex:i];
mCCodeString = [[mCCodeString componentsSeparatedByCharactersInSet:
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
componentsJoinedByString:@""];
if([mCCodeString intValue] != 1)//because This is US/CA
{
for(int j = 0; j<[pickerViewElementArray_ count]; j++)
{
if([[pickerViewElementArray_ objectAtIndex:j] intValue] == [mCCodeString intValue])
{
mFound = TRUE;
//we got ourselves final telephone number
//and we got country code!!
mContactPhone = [mContactPhone substringFromIndex:i];
break;
}
}
}
}
if(mFound == FALSE)//If no luck finding a match - lets try again, but til index 2. (find if it is +1)
{
mCCodeString = [mContactPhone substringToIndex:2];
mCCodeString = [[mCCodeString componentsSeparatedByCharactersInSet:
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
componentsJoinedByString:@""];
mContactPhone = [mContactPhone substringFromIndex:1];
for(int i = 0; i<[pickerViewElementArray_ count]; i++)
{
if([[pickerViewElementArray_ objectAtIndex:i] intValue] == [mCCodeString intValue])
{
//we found it!! Its +1!!!!
mFound = TRUE;
break;
}
}
}
}
}
mContactPhone = [[mContactPhone componentsSeparatedByCharactersInSet:
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
componentsJoinedByString:@""];
}
您还需要国家/地区代码数组:例如:
NSArray *pickerViewElementArray_ = [NSArray arrayWithObjects:
@"93",
@"355",
@"213",
@"1684",
@"376",
@"244",
....
希望能帮助别人!