“+”的电话号码是否与没有“+”的电话号码不同?

时间:2013-04-12 01:53:31

标签: iphone ios objective-c openurl

“+”的电话号码是否与没有“+”的电话号码不同?

我的意思是A: +1(510)234-567B:1510234567之类的数字。呼叫号码是否相同?我想拨打电话从地址簿中获取哪个号码。格式为A,使用后

NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"-+() *#"];
txt = [[txt componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];

数字格式为B。

这是一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

来自维基百科文章 Telephone numbering plan 国家/地区代码

  

国家/地区代码 - 仅在拨打其他电话时才需要   国家。在国际使用中,电话号码以前缀为前缀   国家/地区代码前面加上“+”,并用空格代替   连字符(例如,“+ XX YYY ZZZ ZZZZ”)。这允许读者选择   他们的访问代码(也称为国际拨号数字)   需要从他们的位置拨打。但是,它经常被引用在一起   使用国际访问代码,必须在拨号前面   字符串,例如NANP国家的“011”(包括加拿大,   百慕大和美国):“011-XX-YYY-ZZZ-ZZZZ”,或“00”in   大多数欧洲国家:“00-XX-YYY-ZZZ-ZZZZ”。这可能会导致   在读者所在的地方可以使用不同的访问代码   位于。在GSM网络上,“+”是可以使用的实际字符   内部作为国际访问代码,而不仅仅是   会议。

看起来+不是强制性的,但如果有人拨打国际区域,它就会清楚。

答案 1 :(得分:2)

以下代码可以帮助您解决问题!试一试。

- (NSURL *)makeCall:(NSString *)number
{
    NSString *txt = number;
    NSString *cleanedString = [[txt componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];
    NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];
    return telURL;
}

BOOL bCanCall = [[UIApplication sharedApplication]canOpenURL:urlToCall];

if (bCanCall)
{
    UIWebView *callView = [[[UIWebView alloc]init] autorelease];
    [callView loadRequest:[NSURLRequest requestWithURL:urlToCall]];
    [self.view addSubview:callView];
}