1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > IOS-模糊搜索(支持中文 拼音 字母)

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

时间:2023-05-15 02:33:12

相关推荐

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上面有需要可以下载看看:/Amuxiaomu/SearchDemo

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。