美文网首页
ios 模糊搜索 汉字搜索 不分大小写拼音或首字母搜索

ios 模糊搜索 汉字搜索 不分大小写拼音或首字母搜索

作者: 木子李55 | 来源:发表于2020-12-02 23:49 被阅读0次
    人·狗·秋千.png

    今天碰到一个搜索相关的需求:

    比如服务超市有个服务:”园林售卡“,无论用户输入如下哪个时,都要能搜索出来
    园林售卡,
    园林,
    yuanlinshouka,
    YUANLINSHOUKA,
    ylsk,
    YLSK,
    ...

    思路:把这个服务的名字转化为一个字符串,该字符串包含这些值即可;

    代码:

    NSString *str = @"园林售卡";
    NSString *transformStr = [NSString tansformToMixedStringWithOriginStr:str];
    NSLog(@"转化前: %@", str);
    NSLog(@"转化后: %@", transformStr);
    
    // 转化前: 园林售卡
    // 转化后: 园林售卡,yuanlinshouka,YUANLINSHOUKA,ylsk,YLSK
    
    
       // 写个NSString分类,方便使用
    @interface NSString (LYZ)
    
    +(NSString *)tansformToMixedStringWithOriginStr:(NSString *)originStr;
    
    @end
    
    @implementation NSString (LYZ)
    
    +(NSString *)tansformToMixedStringWithOriginStr:(NSString *)originStr{
        
        // 转成了可变字符串
        NSMutableString *str = [NSMutableString stringWithString:originStr];
        CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
        //再转换为不带声调的拼音
        CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
        NSArray *pinyinArray = [str componentsSeparatedByString:@" "];
        
        NSMutableString *allString = [NSMutableString new];
    
        // 得到拼音
        NSMutableString *pinyinString = [NSMutableString new];
        for (NSString *s in pinyinArray) {
            [pinyinString appendString:s];
        }
        
        // 得到拼音首字母
        NSMutableString *initialStr = [NSMutableString new];
        for (NSString *s in pinyinArray){
            if (s.length > 0){
                [initialStr appendString:  [s substringToIndex:1]];
            }
        }
        
        [allString appendFormat:@"%@,",originStr];// 添加汉字
        [allString appendFormat:@"%@,",pinyinString]; // 添加小写拼音
        [allString appendFormat:@"%@,",[pinyinString uppercaseString]]; // 添加大写拼音
        [allString appendFormat:@"%@,",initialStr]; // 添加小写首字母
        [allString appendFormat:@"%@",[initialStr uppercaseString]]; // 添加大写首字母
    
        return [allString copy];
    }
    
    

    相关文章

      网友评论

          本文标题:ios 模糊搜索 汉字搜索 不分大小写拼音或首字母搜索

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