美文网首页iOS进阶历程
iOS正则表达式匹配汉字

iOS正则表达式匹配汉字

作者: huifeidelele | 来源:发表于2017-08-01 14:57 被阅读336次

    前提是朋友有个需求帮忙,集成百度地图得出了公交路线方案(字符串),但只需要路线方案的公交路数。第一时间就考虑了字符串切割,后来发现贼鸡儿麻烦。最后想到了js正则表达式切割字符串,最后会得出指定切割字符串的数组。上网搜了下,果然iOS也有类似功能的API:NSRegularExpression(NSPredicate也尝试过,自己觉得不太合适),这个iOS自己搞的一套用于处理正则表达式的类,还是不错的。下面是例子:

    NSString*routeStr =@"步行375米,到达温德桥站,乘坐1路,再做K1路,经过13站,到达吉林站西广场站,步行355米,到达终点站,步行966米,到达农林街站,乘坐45路,经过15站,到达吉林站西广场站,,再做123abc路步行358米,到达终点站,步行421米,到达市一中站,乘坐7路,经过24站,到达吉林站西广场站,步行508米,到达终点站,步行231米,到达市一中站,乘坐7路,经过2站,到达农林街站,再做11F22路,步行125米,到达农林街站,乘坐45路,经过15站,到达吉林站西广场站,步行358米,到达终点站,步行419米,到达市一中东门站,乘坐57路,经过9站,到达德胜门站,步行1米,到达德胜门站,乘坐8路,经过6站,到达吉林站西广场站,步行368米,到达终点站";

    NSString*regex =@"\[0-9a-zA-Z]+\u8def|\u7ec8\u70b9\u7ad9";  //Unicode编码:\u8def:路    \u7ec8\u70b9\u7ad9:终点站

    NSRegularExpression*predicate = [NSRegularExpressionregularExpressionWithPattern:regexoptions:0error:nil];

    __blockNSMutableArray*fields = [[NSMutableArrayalloc]init];

    [predicateenumerateMatchesInString:routeStroptions:0range:NSMakeRange(0, routeStr.length)

    usingBlock:^(NSTextCheckingResult*match,NSMatchingFlagsflags,BOOL*stop){

    [fieldsinsertObject:[routeStrsubstringWithRange:match.range]atIndex:fields.count];

    }];

    NSLog(@"指定路径数组:%@",fields);  //指定路径数组:(1路,K1路,终点站,45路,123abc路,终点站,7路,终点站,7路,11F22路,45路,终点站,57路,8路,终点站)

    最后,说明一点,其实不是我不想说明其中具体内容,因为现在是个菜鸡,还有工作,其中函数和具体东西,如果后期再遇到,有时间深入了解,会不断更新的(简书现在也懒得只写纯文字,哈哈)。

    这里主要给看到 的人提供了一个思路:NSRegularExpression + 正则(NSRegularExpression给我提供给了可实现API,正则自己看去,我也是琢磨着写,NSRegularExpression不需要加^$这种正则的标识,算是固定格式)。

    相关文章

      网友评论

        本文标题:iOS正则表达式匹配汉字

        本文链接:https://www.haomeiwen.com/subject/euujlxtx.html