2017-10-17 64 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")