ios开发中使用正则表达式识别处理字符串中的URL
来源:互联网 发布:淘宝增加流量 编辑:程序博客网 时间:2024/05/17 03:10
在项目中经常有识别文本中url并可以点击进行网页链接的需求。我们需要适当的处理带url的字符串
代码如下:
-(void)createUI
{
textView=[[UITextViewalloc]initWithFrame:CGRectMake(18,100, self.view.bounds.size.width-36,100)];
[textView setEditable:NO];
[self.viewaddSubview:textView];
[self subStr:@"我是一段中文https://github.com/TinyQ我还是一段中文阿里科技屌丝拉法基是拉萨江东父老阿斯蒂芬阿斯蒂芬四缸发动机https://www.baidu.com发送"];
}
-(NSMutableAttributedString*)subStr:(NSString *)string
{
NSError *error;
//可以识别url的正则表达式
NSString *regulaStr =@"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";
NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:regulaStr
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *arrayOfAllMatches = [regexmatchesInString:string options:0range:NSMakeRange(0, [stringlength])];
//NSString *subStr;
NSMutableArray *arr=[[NSMutableArrayalloc]init];
NSArray *rangeArr=[[NSMutableArrayalloc]init];
for (NSTextCheckingResult *matchin arrayOfAllMatches)
{
NSString* substringForMatch;
substringForMatch = [string substringWithRange:match.range];
[arr addObject:substringForMatch];
}
NSString *subStr=string;
for (NSString *strin arr)
{
subStr=[subStr stringByReplacingOccurrencesOfString:strwithString:@"网页链接"];
}
rangeArr=[self rangesOfString:@"网页链接"inString:subStr];
// //计算大小
UIFont *font = [UIFontsystemFontOfSize:15];
NSMutableAttributedString *attributedText;
attributedText=[[NSMutableAttributedStringalloc]initWithString:subStrattributes:@{NSFontAttributeName :font}];
for(NSValue *valuein rangeArr)
{
NSInteger index=[rangeArrindexOfObject:value];
NSRange range=[valuerangeValue];
[attributedText addAttribute:NSLinkAttributeName value: [NSURLURLWithString:[NSStringstringWithFormat:@"%@",[arrobjectAtIndex:index]]] range:range];
}
return attributedText;
}
//获取查找字符串在母串中的NSRange
- (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
NSMutableArray *results = [NSMutableArrayarray];
NSRange searchRange =NSMakeRange(0, [strlength]);
NSRange range;
while ((range = [strrangeOfString:searchString options:0range:searchRange]).location !=NSNotFound) {
[results addObject:[NSValuevalueWithRange:range]];
searchRange = NSMakeRange(NSMaxRange(range), [strlength] - NSMaxRange(range));
}
return results;
}
- ios开发中使用正则表达式识别处理字符串中的URL
- 正则表达式识别字符串中的URL
- 在iOS开发中使用正则表达式分解字符串
- iOS开发中获取字符串中的URL
- 正则表达式识别URL
- iOS开发中使用正则表达式
- iOS开发中使用正则表达式
- iOS开发中正则表达式的使用
- IOS开发中正则表达式的使用
- iOS开发中使用正则表达式
- 提取字符串中的url网址 正则表达式
- java中正则表达式中的非字符串处理
- 使用正则表达式解析Url字符串
- IOS使用正则表达式识别邮箱地址
- 使用正则表达式处理字符串中多个子串
- iOS 开发中正则表达式
- 正则表达式在字符串处理中的应用
- 正则表达式在字符串处理中的应用
- C语言学习超前期
- VS2013快捷键及技巧
- model中字段格式验证
- HTML5开发-在你的游戏应用中加入广告
- 正则表达式介绍及常见用法
- ios开发中使用正则表达式识别处理字符串中的URL
- 画出自己的UI组件
- Linux chgrp chown chmod的使用
- Java 中几种常见的 排序算法 代码实现
- Using Directx In VS2012 With CS
- Spring Quartz定时器
- 小强的HTML5移动开发之路(53)——jQueryMobile页面间参数传递
- sysfs创建led驱动
- popupWindow弹出来后,背景变暗