我正在使用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

我不希望它出现并删除它,然后使用正则表达式代码检索数字会更困难。您对如何仅检索数字有任何想法吗?

最佳答案

我个人将只在字符串上使用-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的来源吗?

关于ios - NSDataDetector电话号码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6803608/

10-09 23:21