使用 NS谓词检查电话号码数组



我有一个电话号码数组,我需要检查一个特定的(给定)电话号码是否包含在该数组中。那么我该如何使用 NSPredicate 来做到这一点。(注意,目前我正在使用数组包含对象 method.in 我的问题,我需要使用谓词的解决方案)。所以如果有人知道这一点,请帮助我

 NSString *p = allUsers.phoneNumber;
            NSString *p1 = [p stringByReplacingOccurrencesOfString:@"-" withString:@""];
            NSString *p2 = [p1 stringByReplacingOccurrencesOfString:@"(" withString:@""];
            NSString *p3 = [p2 stringByReplacingOccurrencesOfString:@")" withString:@""];
            NSString *p4 = [p3 stringByReplacingOccurrencesOfString:@" " withString:@""];
            NSString *p5 = [p4 stringByReplacingOccurrencesOfString:@"+" withString:@""];
            NSString *p6 = [p5 stringByReplacingOccurrencesOfString:@"*" withString:@""];
            NSString *p7 = [p6 stringByReplacingOccurrencesOfString:@"#" withString:@""];

 if ([arrayAllPhoneNumbers containsObject:p7])
            {
                allUsers.isPhoneUser = YES;
            }
// For number kind of values:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = %@", value];
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate];
// For string kind of values:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", value];
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate];
// For any object kind of value (yes, you can search objects also):
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", value];
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate];

一个很好的解决方案是,尽管使用了NSPredicate,但你可以尝试使用NSDatDetector请尝试以下操作:-

NSString *p = @"8147744507";
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber
                                                           error:&error];
NSArray *matches = [detector matchesInString:p
                                     options:0
                                       range:NSMakeRange(0, [p length])];
for (NSTextCheckingResult *match in matches)
{
    if ([match resultType] == NSTextCheckingTypePhoneNumber)
    {
        NSString *phoneNumber = [match phoneNumber];
        NSLog(@"phone no valid=%@",phoneNumber);
    }
}

相关内容

最新更新