NSDataDetector电话号码

时间:2011-07-23 22:05:49

标签: ios regex phone-number

我正在使用NSDataDetector来解析文本并检索数字。这是我的代码:

 NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
 error:&error];

NSArray *matches = [detector matchesInString:locationAndTitle options:0 range:NSMakeRange(0,[locationAndTitle length])];

for (NSTextCheckingResult *match in matches) {


        if ([match resultType] == NSTextCheckingTypePhoneNumber) {

            self.theNumber = [match phoneNumber];
        }
    }

这个问题是它有时会返回这样的东西:

电话:9729957777 要么 9729957777x3547634

我不希望它出现并删除它会比使用正则表达式代码检索数字更难。你对如何只检索号码有任何想法吗?

1 个答案:

答案 0 :(得分:2)

就个人而言,我只会在字符串上使用-substringWithRange:删除过去的所有内容,包括“x”字符:

NSString * myPhoneNum = @"9729957777x3547634";
NSRange r = [myPhoneNum rangeOfString:@"x"];
if (r.location != NSNotFound) {
    myPhoneNum = [myPhoneNum substringWithRange:NSMakeRange(0, r.location)];
}
NSLog(@"Fixed number: %@", myPhoneNum);

无论如何,想知道x3547634来自哪里?