2010-12-01 39 views
1

我有一個NSArray,其內容是字符串與格式類似於: [AZ] {+} - [0-9] {+}NSPredicates beginsWith

所以基本上一堆重複字母字符,一個分離器,然後1個或多個數字如此

我想在數組中匹配的分隔符,價值觀來篩選,但我似乎無法在我的謂詞的格式明確指定:

NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"self BEGINSWITH %@", aValue]; 
NSArray *filtered = [entries filteredArrayUsingPredicate:aPredicate]; 

如何你是否限制這種情況下的過濾?

回答

1

您可以使用「匹配」運營商做一個正則表達式搜索,就像這樣:

NSPredicate * p = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[a-z]+-.*"]; 
NSArray * s = [NSArray arrayWithObject:@"abc-123"]; 
NSLog(@"%@", [s filteredArrayUsingPredicate:p]); 

有一個警告,雖然。正則表達式在整個字符串中匹配。所以如果你想找到所有以3個字母開頭的元素,你的表達不能只是「[a-z] {3}」。它必須是「[a-z] {3}。*」。第一個將失敗,不是任何3個字母,而第二個將匹配至少3個字母長的任何東西。

花了我一段時間才意識到這一點...

相關問題