0

我有以下有效的代码:

    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.有没有办法可以用 NSMutableArray 更改 NSString 并将 NSTextCheckingResult 保存在名为 filterArray 的 NSMutableArray 中?

2.如何在TextField中显示时突出显示匹配的值?

4

1 回答 1

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。请看这个问题的答案:)你如何使用 NSAttributedString? 形成属性字符串后,将其设置为文本字段:

    NSAttributedString * attributedString;
    UITextField *textField;
    [ttextField setAttributedText:attributedString];
于 2013-10-25T08:55:45.623 回答