在IOS中,如何删除+ - #*(),它来自地址簿

时间:2013-04-11 12:12:12

标签: iphone ios phone-number openurl

在IOS中,如何删除来自地址簿的+ - #*()。 例如:

 NSString *txt = @"+1(510)1234567"
 txt = [NSString stringWithFormat:@"tel://%@", txt];
 [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:txt]];

这是一个无效的号码。 [[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlToCall]];对此类型号码无用。

除了使用之外,我可以有更好的选择     [txt stringByReplacingOccurrencesOfString:@"-" withString:@""] .... 我只是想打个电话。

感谢您的帮助。


实际上:我们可以通过openURL进行调用:调用的格式不是“tel://”,而是“tel:”。 那么,我应该做的是:

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:  
  [[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] 
invertedSet]]     componentsJoinedByString:@""];
NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];

没关系。

-------------------------------- @“tel://”不是拨打电话的正确网址! 我们必须使用@“tel:”

如果不是某个数字,则为+1(510)3436     BOOL bCanCall = [[UIApplication sharedApplication] canOpenURL:urlToCall];将返回False。你不能打电话。

3 个答案:

答案 0 :(得分:3)

试试这个,它可能会起作用

-(NSString *) formatIdentificationNumber:(NSString *)string
{
    NSCharacterSet * invalidNumberSet = [NSCharacterSet characterSetWithCharactersInString:@"\n_!@#$%^&*()[]{}'\".,<>:;|\\/?+=\t~` "];

    NSString  * result  = @"";
    NSScanner * scanner = [NSScanner scannerWithString:string];
    NSString  * scannerResult;

    [scanner setCharactersToBeSkipped:nil];

    while (![scanner isAtEnd])
    {
        if([scanner scanUpToCharactersFromSet:invalidNumberSet intoString:&scannerResult])
        {
            result = [result stringByAppendingString:scannerResult];
        }
        else
        {
            if(![scanner isAtEnd])
            {
                [scanner setScanLocation:[scanner scanLocation]+1];
            }
        }
    }

    return result;
}

或查看link

答案 1 :(得分:3)

你可以像这样删除..

NSString *s = @"+1(510)1234567";
NSCharacterSet *unwantedStr = [NSCharacterSet characterSetWithCharactersInString:@"+()"];
s = [[s componentsSeparatedByCharactersInSet: unwantedStr] componentsJoinedByString: @""];
NSLog(@"%@", s); 

答案 2 :(得分:1)

Alternativ,这里有一些提示,但您可以优化代码。

- (void)testExample
{
    NSMutableCharacterSet *mvalidCharSet = [[NSMutableCharacterSet alloc] init];
    [mvalidCharSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet] ];
    [mvalidCharSet addCharactersInString: @"+"]; 
    NSCharacterSet *validCharSet = [mvalidCharSet copy]; // not mutable -> more efficient
    NSCharacterSet *invalidCharSet = [validCharSet invertedSet];
    NSString *txt = @"+1(510)1234567";
    NSArray * components = [txt componentsSeparatedByCharactersInSet:invalidCharSet];
    NSString * rejoin = [components componentsJoinedByString:@""];
    NSLog(@"%@", rejoin);
}