需求1:找出所有以#开头,以空格结尾
的字符串
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *arr = [self getStringArrayWithRegularExpression:@"(#[a-z]+ )" checkString:@"Same place, same time, each photo in a different month. \n#fascinating #wonderfulearth "];
NSLog(@"%@", arr);
}
- (NSArray<NSString *> *)getStringArrayWithRegularExpression:(NSString *)regex checkString:(NSString *)checkString {
if (!checkString) {
return nil;
}
NSError *error = NULL;
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators error:&error];
NSArray *resultArray = [regularExpression matchesInString:checkString options:NSMatchingReportProgress range:NSMakeRange(0, [checkString length])];
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:0];
for (NSTextCheckingResult *result in resultArray) {
for (NSInteger i = 1; i < [result numberOfRanges]; i++) {
NSString *matchString;
NSRange range = [result rangeAtIndex:i];
if (range.location != NSNotFound) {
matchString = [checkString substringWithRange:[result rangeAtIndex:i]];
} else {
matchString = @"";
}
[arr addObject:matchString];
}
}
return [arr copy];
}
@end
输出:
(
"#fascinating ",
"#wonderfulearth "
)
需求2:找出所有符合规则的字符串并标红输入到label上
- (void)viewDidLoad {
[super viewDidLoad];
NSString *originStr = @"hello world, hello everybody~ OK, I konw";
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:originStr];
NSArray *rangeArray = [self getRangesArrayWithRegularExpression:@"(hello|OK|konw)" checkString:originStr];
for (NSValue *value in rangeArray) {
NSRange range = value.rangeValue;
[attrStr addAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]} range:range];
}
self.showLabel.attributedText = attrStr;
}
- (NSArray<NSValue *> *)getRangesArrayWithRegularExpression:(NSString *)regex checkString:(NSString *)checkString {
if (!checkString) return nil;
NSError *error = NULL;
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators error:&error];
NSArray *resultArray = [regularExpression matchesInString:checkString options:NSMatchingReportProgress range:NSMakeRange(0, [checkString length])];
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:0];
for (NSTextCheckingResult *result in resultArray) {
for (NSInteger i = 1; i < [result numberOfRanges]; i++) {
NSRange range = [result rangeAtIndex:i];
if (range.location != NSNotFound) {
[arr addObject:[NSValue valueWithRange:range]];
}
}
}
return [arr copy];
}

网友评论