IOS-模糊搜索(支持中文,拼音,字母)


IOS - 模糊搜索

這里模糊搜索 不是在數據中的,而是在數組,或者你需要的地方

首先先看一下效果:

所搜之前:

       

搜索之后:

   

下面思路講解:

1.定義好需要加載數據的數組

這里需定義一個模型,加載數組中的內容,在模型中在加入兩個變量,一個是拼音,一個是拼音的首字母

2. 在數組加載到模型中的時候,將數組中的一對象 獲取到 拼音,和拼音的首字母

// pinyin

- (NSString *)transformToPinyin{

    NSMutableString * mutableString = [NSMutableString stringWithString:self];

    CFStringTransform((CFMutableStringRef) mutableString, NULL, kCFStringTransformToLatin, false);

    mutableString = (NSMutableString *)[mutableString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];

    mutableString = [[mutableString stringByReplacingOccurrencesOfString:@" " withString:@""] mutableCopy];

    return mutableString.lowercaseString;

}

//

- (NSString * )transformToPinyinFirstLetter{

    NSMutableString * stringM = [NSMutableString string];

    

    NSString * temp = nil;

    for (int i = 0; i < [self length]; i ++) {

        

        temp = [self substringWithRange:NSMakeRange(i, 1)];

        

        NSMutableString * mutableString = [NSMutableString stringWithString:temp];

        

        CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);

        

        mutableString = (NSMutableString *)[mutableString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];

        

        mutableString = [[mutableString substringToIndex:1] mutableCopy];

        

        [stringM appendString:(NSString *)mutableString];

    }

    return stringM.lowercaseString;

}

將這兩個方法添加到NSString的分類中,作用是:獲取一個字符串對像的拼音,和拼音首字母

+ (NSString *)getPinyinWithString:(NSString *)string{

   

    NSString * pinyin;

    if ([string length]) {

        NSMutableString * ms = [[NSMutableString alloc] initWithString:string];

        if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {

            

        }

        if (CFStringTransform( (__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {

        

        }

        pinyin = ms;

    }

    return pinyin;

}

 

+ (NSString *)getFirstLetterWithString:(NSString *)string{

   

    NSString * regex = @"^[a-zA-Z]*$";

    NSString * firstLetter = [string substringToIndex:1];

    

    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    

    if ([predicate evaluateWithObject:firstLetter] == YES) {

        return [firstLetter uppercaseString];

    }else {

        return @"~";

    }

}

  將漢字轉換成拼音

 

做好了這些以后,所有就是把你所搜的內容在 模型數組中搜索,所搜到的時候就顯示出來

代碼在GitHub上面有需要可以下載看看:https://github.com/Amuxiaomu/SearchDemo

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM