iOS 开发正则匹配字符串中固定字符 如搜索高亮显示 返回所有range

常规方法:

//获取一个字符在字符串中出现的所有位置 返回一个被NSValue包装的NSRange数组
- (NSArray *)rangeOfSubString:(NSString *)subStr inString:(NSString *)wholeString {
    if (subStr == nil && [subStr isEqualToString:@""]) {
        return nil;
    }
    NSMutableArray *aRangeArray = [NSMutableArray array];
    NSString *temp;
    for (int i = 0; i < wholeString.length; i ++) {
        temp = [wholeString substringWithRange:NSMakeRange(i, subStr.length)];
        if ([temp isEqualToString:subStr]) {
            NSRange range = {i,subStr.length};
            [aRangeArray addObject:[NSValue valueWithRange:range]];
        }
    }
    return aRangeArray;
}

正则方法:

-(NSArray *)matchCharacters:(NSString *)targetString inWholeString:(NSString *)wholeString{
    if (targetString.length==0 || !targetString) {
        return nil;
    }
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"[%@]",targetString] options:0 error:nil];
    NSArray *matches = [regex matchesInString:wholeString options:0 range:NSMakeRange(0,wholeString.length)];

    NSMutableArray * aRangeArray = [NSMutableArray array];
    for(NSTextCheckingResult *result in [matches objectEnumerator]) {
        NSRange matchRange = [result range];
        [aRangeArray addObject:[NSValue valueWithRange:matchRange]];
    }
    return aRangeArray;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。