我可以解释这个问题的最简单方法是使用代码示例及其输出,但本质上正在发生的事情是NSDataDetector
在包含单词“电话号码”的字符串中检测电话号码。
NSError *error = nil;
NSDataDetector *dataDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber
error:&error];
NSArray *stringsToTest = @[
@"testing phone number 0123 4567891",
@"testing some other number 0123 4567892",
@"phone number 0123 4567893",
@"blah blah 0123 4567894",
@"testing telephone number 0123 4567895"
];
for (NSString *string in stringsToTest)
{
[dataDetector enumerateMatchesInString:string
options:0
range:NSMakeRange(0, string.length)
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"%@", result.phoneNumber);
}];
}
输出:
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] phone number 0123 4567891
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] 0123 4567892
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] phone number 0123 4567893
2013-11-24 19:04:26.000 PhoneNumberDetector[21874:70b] 0123 4567894
2013-11-24 19:04:26.001 PhoneNumberDetector[21874:70b] 0123 4567895
我已经阅读了文档并在 SO 周围进行了搜索,但找不到任何表明这是否是预期行为的东西,如果是,为什么。
这发生在 7.0 模拟器以及运行 7.0.4 的 iPhone 5s 上。
如果有人能对这个问题有所了解,我将不胜感激。
更新:
为了澄清,我不希望文本“电话号码”成为访问NSTextCheckingResult
phoneNumber
属性时结果的一部分。