使用短语和数字序列设置 NSPredicate
Setting up NSPredicate with a phrase and number sequence
如果这是一个过于具体的问题,我很抱歉。尝试使用 NSPredicate 搜索基本帮助,但一无所获。
我正在尝试验证应以特定单词开头(假设它是 SPOT,全部大写)并且后跟恰好 4 个数字的字符串。
换句话说,例如SPOT1234或SPOT0483将通过验证。 SPAT1234、spot1234、SPOT123 或任何其他字符串都会失败。
谁能给我指出正确的方向?
您可以使用 NSRegularExpression
正如@Larme 所说:
- (BOOL)validateString:(NSString *)string {
return [string rangeOfString:@"^SPOT\d{4}$" options:NSRegularExpressionSearch].location != NSNotFound;
}
NSLog(@"%d", [self validateString:@"SPOT123456789"]); // false
NSLog(@"%d", [self validateString:@"SPAT1234"]); // false
NSLog(@"%d", [self validateString:@"spot1234"]); // false
NSLog(@"%d", [self validateString:@"SPOT123"]); // false
NSLog(@"%d", [self validateString:@"SPOT0483"]); // true
您可以使用 NSPredicate with a regular expression.
NSArray *testArray = @[@"SPOT1234", @"SPOT0483", @"SPAT1234", @"spot1234", @"SPOT123", @"SPOT1233232"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^SPOT\\d{4}$'"];
NSArray *resultsArray = [testArray filteredArrayUsingPredicate:predicate];
resultsArray 将包含两个字符串:SPOT1234、SPOT0483
试试这个:
NSArray *arrStr = @[@"SPOT1212",@"spot1234",@"SPOT12233"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"self LIKE \"SPOT????\""]];
NSArray *filterArr = [arrStr filteredArrayUsingPredicate:predicate];
如果这是一个过于具体的问题,我很抱歉。尝试使用 NSPredicate 搜索基本帮助,但一无所获。
我正在尝试验证应以特定单词开头(假设它是 SPOT,全部大写)并且后跟恰好 4 个数字的字符串。
换句话说,例如SPOT1234或SPOT0483将通过验证。 SPAT1234、spot1234、SPOT123 或任何其他字符串都会失败。
谁能给我指出正确的方向?
您可以使用 NSRegularExpression
正如@Larme 所说:
- (BOOL)validateString:(NSString *)string {
return [string rangeOfString:@"^SPOT\d{4}$" options:NSRegularExpressionSearch].location != NSNotFound;
}
NSLog(@"%d", [self validateString:@"SPOT123456789"]); // false
NSLog(@"%d", [self validateString:@"SPAT1234"]); // false
NSLog(@"%d", [self validateString:@"spot1234"]); // false
NSLog(@"%d", [self validateString:@"SPOT123"]); // false
NSLog(@"%d", [self validateString:@"SPOT0483"]); // true
您可以使用 NSPredicate with a regular expression.
NSArray *testArray = @[@"SPOT1234", @"SPOT0483", @"SPAT1234", @"spot1234", @"SPOT123", @"SPOT1233232"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '^SPOT\\d{4}$'"];
NSArray *resultsArray = [testArray filteredArrayUsingPredicate:predicate];
resultsArray 将包含两个字符串:SPOT1234、SPOT0483
试试这个:
NSArray *arrStr = @[@"SPOT1212",@"spot1234",@"SPOT12233"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"self LIKE \"SPOT????\""]];
NSArray *filterArr = [arrStr filteredArrayUsingPredicate:predicate];