2017-10-17 79 views
0

标题几乎说明了它 - 我试图编写一个可以接受给定字符串的谓词,并检查是否有另一个字符串包含至少三个字母,我的字符串具有。这与字符顺序和大小写无关,并且包括重复出现的字母。这样做的一个例子是,如果我有三个字母的大量数组,我希望能够将一个带有六个字符的字符串(或一个由六个单个字符串组成的数组?)传递给这个谓词并将其用于评估我阵列中的任何三个字母单词是否由我通过的六个字母中的任意三个组成(包含重复项)。NSPredicate在评估字符串包含给定字符串中包含的3个或更多字符时评估为真

我想这将是沿着线的东西:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] .{3,}%@",<array of characters>]; 

但我知道,语法不正确。

+0

正则表达式不能做这种方式。你应该考虑其他方法。 –

+0

目前还不清楚(“重复包含”)。你有没有“有效”的样本,什么时候有“重复”?否则,如果您可以使用块:'[NSPredicate predicateWithBlock:^ BOOL(NSString * _Nullable evaluateObject,NSDictionary * _Nullable bindings){if([evaluateObject length] <3){return NO;} NSUInteger count = 0; for(NSUInteger i = 0; i <[myString length]; i ++){NSString * subString = [myString substringWithRange:NSMakeRange(i,1)]; if([evaluateObject rangeOfString:subString] .location!= NSNotFound){count ++;如果(count> 3)返回YES;}} return NO;}];' – Larme

回答

0

要检查创建谓词,尽量

SWIFT: 
let predicate = NSPredicate(format: "SELF contains %@", "abc")