总结的好的两篇文章
第一篇
第二篇
其它扩展文章
第一篇
第二篇
正则表达式的所有符号含义
这几篇文章还没有仔细看看,先mark,在阅读这几篇文章之前也做过类似文字转化emoji的功能,但不同懂当时的正则表达式为什么这么写,大概读了这几篇文章总算有些了解。
举一个简单的🌰
比如我想获取到字符串 "速度快放假#啦啦啦#弄啥呢#123#"
所有被#包含的文字,并将其显示红色,实现跳转功能,如下图功能
这里说一下实现,其中点击事件是通过YYText框架实现的
NSString *str = @"速度快放假#啦啦啦#弄啥呢#123#";
NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:str];
YYLabel *lab = [[YYLabel alloc] init];
NSError *error;
NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:@"#(...)#" options:0 error:&error];
if (error||regular==nil) {
return;
}
NSArray *array = [regular matchesInString:str options:NSMatchingWithTransparentBounds range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *result in array) {
NSRange range = result.range;
[attributeStr yy_setTextHighlightRange:range color:[UIColor redColor] backgroundColor:[UIColor lightGrayColor] tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect) {
UIAlertController *alerController = [UIAlertController alertControllerWithTitle:@"提示" message:@"点击了红色字体" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
}];
[alerController addAction:action];
[self presentViewController:alerController animated:YES completion:nil];
}];
}
[lab setAttributedText:attributeStr];
[lab setFrame:CGRectMake(10, 30, 200, 40)];
[self.view addSubview:lab];
PS:如需转载请注明iOS小乔//www.greatytc.com/users/f029d92cedc0/latest_articles
如果能够帮到你,请你打赏支持我的创作(请小乔喝杯饮料😁)
©小乔