zoukankan      html  css  js  c++  java
  • 谓词(搜索)

    复制代码
     1 #import <Foundation/Foundation.h>
     2 #import "Person.h"
     3 
     4 int main(int argc, const char * argv[]) {
     5     @autoreleasepool {
     6         Person *person1 = [[Person alloc] initWithName:@"Mary" andAge:13 andGender:@"girl"];
     7         Person *person2 = [[Person alloc] initWithName:@"Tom" andAge:16 andGender:@"boy"];
     8         Person *person3 = [[Person alloc] initWithName:@"Linda" andAge:20 andGender:@"girl"];
     9         Person *person4 = [[Person alloc] initWithName:@"Jerry" andAge:32 andGender:@"boy"];
    10         Person *person5 = [[Person alloc] initWithName:@"Sam" andAge:24 andGender:@"boy"];
    11         
    12         NSArray *personArr = @[person1, person2, person3, person4, person5];
    13 #pragma mark 关系运算符
    14         // 创建谓词,用于指定过滤条件 -- 年龄大于20
    15         NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"age > 20"];
    16         // 遍历数组
    17         for (Person *person in personArr) {
    18             // 判断person是否符合谓词里所定义的条件
    19             if ([predicate1 evaluateWithObject:person]) {
    20                 NSLog(@"person = %@", person);
    21             }
    22         }
    23 #pragma mark 快速筛选数组
    24         // 过滤数组,找到符合条件的元素,存到数组中
    25         NSArray *resultArr = [personArr filteredArrayUsingPredicate:predicate1];
    26         NSLog(@" > %@", resultArr);
    27         
    28 #pragma mark 逻辑运算符 and与 or或 not非
    29         // 年龄大于20岁的女生
    30         NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"age < 20 && gender = 'girl'"];
    31         resultArr = [personArr filteredArrayUsingPredicate:predicate2];
    32         NSLog(@"and%@", resultArr);
    33         
    34 #pragma mark 范围运算符 between在...之间  in包含的关系
    35         // 年龄在16到24之间的人,包含16和24
    36         NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"age between {16, 24}"];
    37         resultArr = [personArr filteredArrayUsingPredicate:predicate3];
    38         NSLog(@"between%@", resultArr);
    39         
    40         // 姓名是mary 和 tom的人
    41         NSPredicate *predicate4 = [NSPredicate predicateWithFormat:@"name in {'Mary', 'Tom'}"];
    42         resultArr = [personArr filteredArrayUsingPredicate:predicate4];
    43         NSLog(@"in %@", resultArr);
    44         
    45 #pragma mark 占位符 $
    46 //        NSPredicate *predicate5 = [NSPredicate predicateWithFormat:@"name = $Name"];
    47         NSPredicate *predicate5 = [NSPredicate predicateWithFormat:@"age < $Age and gender = $Gender"];
    48         NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Linda", @"Name", @20, @"Age", @"girl", @"Gender" ,nil];
    49         predicate5 = [predicate5 predicateWithSubstitutionVariables:dictionary];
    50         resultArr = [personArr filteredArrayUsingPredicate:predicate5];
    51         NSLog(@"占位符%@", resultArr);
    52         
    53 #pragma mark 字符串运算符
    54         NSArray *strArray = @[@"Hello", @"world", @"hey", @"kitty"];
    55         // 以字符串he开头,忽略大小写
    56         NSPredicate *predicate6 = [NSPredicate predicateWithFormat:@"self beginswith[c] 'he'"];
    57         resultArr = [strArray filteredArrayUsingPredicate:predicate6];
    58         NSLog(@"beginswith%@", resultArr);
    59         // 包含o的
    60         NSPredicate *predicate7 = [NSPredicate predicateWithFormat:@"self contains 'o'"];
    61         resultArr = [strArray filteredArrayUsingPredicate:predicate7];
    62         NSLog(@"contains%@", resultArr);
    63         
    64 #pragma mark LIKE运算符
    65         NSPredicate *predicate8 = [NSPredicate predicateWithFormat:@"self like[c] 'h*'"];
    66         resultArr = [strArray filteredArrayUsingPredicate:predicate8];
    67         NSLog(@"like %@", resultArr);
    68         
    69 #pragma mark 正则表达式
    70         // 验证邮箱
    71         NSString *str = @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
    72         NSPredicate *predicate9 = [NSPredicate predicateWithFormat:@"self matches %@", str];
    73         if ([predicate9 evaluateWithObject:@"http://www.ba"]) {
    74             NSLog(@"正确");
    75         } else {
    76             NSLog(@"错误");
    77         }
    78     }
    79     return 0;
    80 }
    复制代码
  • 相关阅读:
    redis-hash
    redis-list操作
    bootstrap之消息提示
    jQuery水平下拉菜单实现
    JavaScript的Date对象
    积水问题
    Queue的push和front操作
    Stack的pop和push操作
    .py文件不能设置默认打开程序 win10
    Anaconda的安装
  • 原文地址:https://www.cnblogs.com/dongbaoyue/p/5524110.html
Copyright © 2011-2022 走看看