2013-10-25 39 views
0

我有以下的代碼工作:如何使用正則表達式NSRegularExpression了一個NSMutableArray

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-cA-C2][m-oM-O][a-cA-C2]" options:0 error:NULL]; 
    NSString *str = @"Ana"; 
    NSTextCheckingResult *match1 = [regex firstMatchInString:str options:0 range:NSMakeRange(0, [str length])]; 

    NSLog(@"check is exist: %@", [str substringWithRange:[match1 rangeAtIndex:0]]); 

這裏是我的問題:

1.Is有沒有辦法,我可以用一個NSMutableArray改變的NSString並將NSTextCheckingResult保存在名爲filterArray的NSMutableArray中?

2.如何在TextField中顯示時突出顯示匹配值?

回答

0

如果我正確理解你的問題, 你想使用NSArray的字符串,並接收每個字符串匹配結果的NSArray。

因此,1:

NSArray *arrayOfStrings = /* Your array */; 

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-cA-C2][m-oM-O][a-cA-C2]" options:0 error:NULL]; 
    NSMutableArray *filterArray = [NSMutableArray array]; 
    [arrayOfStrings enumerateObjectsUsingBlock:^(NSString * str, NSUInteger idx, BOOL * stop) { 
     NSTextCheckingResult *match = [regex firstMatchInString:str options:0 range:NSMakeRange(0, [str length])]; 
     if (match) { 
      [filterArray addObject:match]; 
     } 
     else { 
      [filterArray addObject:[NSNull null]]; 
     } 

     NSLog(@"String #%i. check is exist: %@",idx, [str substringWithRange:[match rangeAtIndex:0]]); 
    }]; 

2:爲突出你需要使用NSAttributedString字符串的範圍。請看到這個問題的答案:) How do you use NSAttributedString? 如何形成屬性串後,將其設置爲文本框:

NSAttributedString * attributedString; 
    UITextField *textField; 
    [ttextField setAttributedText:attributedString]; 
+0

爲什麼的NSLog(@「字符串#%我檢查是存在的:%@」,IDX, [str substringWithRange:[match rangeAtIndex:0]]);不顯示整個字符串? –

+0

它應該只顯示正則表達式匹配的子字符串 –

相關問題