在iOS开发中使用正则表达式分解字符串
2016-08-11 18:19
483 查看
例:将下列字符串中方括号[]中的内容提取出来并形成一个Array:
解法一:使用componentsSeparatedByString:方法分解:
解法二:使用正则表达式分解:
这里,正则表达式
的意义为左右方括号中包含任意长度的字符串,且字符串不含右方括号’]’。
复习:正则表达式中,’\’代表转义字符,’[^list]’代表不含的字符集,’*’代表重复0到无穷多个前一个字符。
NSString* entry = @"[field1] [field2] [field3] [field4] [field5]";
解法一:使用componentsSeparatedByString:方法分解:
NSArray *rawFields = [entry componentsSeparatedByString:@"] ["]; NSMutableArray *fields = [NSMutableArray arrayWithArray:rawFields]; //Remove '[' from the first field NSString* firstRawField = [rawFields[0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; if([firstRawField hasPrefix:@"["] && [firstRawField length] > 1){ [fields replaceObjectAtIndex:0 withObject:[firstRawField substringFromIndex:1]]; } //Remove ']' from the last field NSString* lastRawField = [rawFields[rawFields.count - 1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; if([lastRawField hasSuffix:@"]"] && [lastRawField length] > 1){ [fields replaceObjectAtIndex:(rawFields.count - 1) withObject:[lastRawField substringToIndex:[lastRawField length] - 1]]; }
解法二:使用正则表达式分解:
__block NSMutableArray *fields = [[NSMutableArray alloc] init]; NSError *error = NULL; NSRegularExpression *fieldRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"\\[[^\\]]*\\]" options:NSRegularExpressionCaseInsensitive error:&error]; [fieldRegularExpression enumerateMatchesInString:entry options:0 range:NSMakeRange(0, [entry length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ if(match.range.length > 2) { NSRange range = NSMakeRange(match.range.location + 1, match.range.length - 2); //Remove '[' and ']' [fields insertObject:[entry substringWithRange:range] atIndex:fields.count]; } else { [fields insertObject:EMPTY_STRING atIndex:fields.count]; } }];
这里,正则表达式
@"\\[[^\\]]*\\]"
的意义为左右方括号中包含任意长度的字符串,且字符串不含右方括号’]’。
复习:正则表达式中,’\’代表转义字符,’[^list]’代表不含的字符集,’*’代表重复0到无穷多个前一个字符。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- msql 正则表达式
- 正则表达式
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- JavaScript正则表达式详解
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Mootools 1.2教程 正则表达式
- 批处理FINDSTR正则表达式用法实例分析
- vbs正则表达式代码
- C#正则表达式Regex类的常用匹配
- C#中利用正则表达式将人民币金额转换为大写汉字
- C#使用正则表达式实现首字母转大写的方法
- php中看实例学正则表达式
- PHP正则表达式之定界符和原子介绍
- PHP下常用正则表达式整理