我正在使用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
我不希望它出现并删除它会比使用正则表达式代码检索数字更难。你对如何只检索号码有任何想法吗?
答案 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来自哪里?