-1

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

 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;

            }
4

2 回答 2

2
// 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];
于 2013-10-18T05:57:05.057 回答
1

一个很好的解决方案是尽管使用 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);
    }
}
于 2013-10-18T06:08:44.597 回答