iOS字符串按一个或多个空格分割成字符串数组

适用场景,多关键字搜索,用户键入一个或多个空格作为分割。

WechatIMG56.jpeg

WechatIMG57.jpeg

可封装到\color{#3582b8}{NSString}类扩展里面。


@implementation NSString (Keywords)
//func
- (NSArray <NSString *>*)keywords {
    //初始化一个mutable集合用作接受每一个关键词
    NSMutableArray <NSString *>*arrM = NSMutableArray.array;
    //判断字符串内是否含有空格符
    if ([self containsString:@" "]) {
        //初始化一个可变字符串用于拼接单个字符
        NSMutableString *cm = NSMutableString.string;
        //遍历字符串内每一个字符
        for (NSInteger i = 0; i < self.length; i++) {
            //当前字符
            NSString *c = [self substringWithRange:NSMakeRange(i, 1)];
            //如果不是空格
            if (![c isEqualToString:@" "]) {
                //则拼接起来
                [cm appendString:c];
            } else {
                //如果下一个是空格并且可变字符串有值,添加元素
                if (![cm containsString:@" "] && cm.length) [arrM addObject:cm];
                //重新初始化可变字符串
                cm = NSMutableString.string;
            }
        }
        //遍历结束,可变字符串可能还包含分割的最后一段关键词,执行同样操作
        if (![cm containsString:@" "] && cm.length) [arrM addObject:cm];
    } else {
        //字符串不包含空格符,直接返回包含一个自身为元素的字符串数组
        arrM = [NSMutableArray arrayWithArray:@[self]];
    }
    //return
    return arrM.copy;
}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。