123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //
- // BMChineseString.m
- //
- // Created by Baymax on 16/2/11.
- // Copyright (c) 2016年 Baymax. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- /**
- 排序主体类
- */
- @interface BMChineseSort : NSObject
- /**
- 根据汉字返回汉字的拼音
-
- @param word 转换的汉字
- @return 返回对应的拼音
- */
- +(NSString *)transformChinese:(NSString *)word;
- /**
- 异步获取拼音分组排序 (分组)
-
- @param objectArray 需要排序的数据源 可以是自定义模型数组,字符串数组,字典数组
- @param key 如果是字符串数组key传nil, 否则传入需要排序的字符串属性,或是字符串字段
- @param finish 异步回调block isSuccess为no, 打开打印功能查看原因
- */
- +(void)sortAndGroup:(NSArray*)objectArray key:(NSString *)key finish:(void (^)(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray*>* sortedObjArr))finish;
- @end
- /**
- 排序参数设置类
- */
- @interface BMChineseSortSetting : NSObject
- +(BMChineseSortSetting*)share;
- /**
- 排序的时间主要花在 中文转拼音上 sortMode 选择转换的方法 default is 2
- sortMode = 1 使用原生CFStringTransform 方法转换,比较耗时
- sortMode = 2 使用汉字码表对应的首字母码表 通过编码顺序查找 比较快
- 码表来源于网络 不保证准确性(除了多音字没发现有错误),可以码表配合polyphoneMapping手动修改想要的映射
- */
- @property (nonatomic,assign) NSInteger sortMode;
- /**
- 是否打印所用时间。 default is YES
- */
- @property (nonatomic,assign) BOOL logEable;
- /**
- 特殊字符最后单独分组所用的 分组名称。 default is @“#”
- */
- @property (strong, nonatomic) NSString * specialCharSectionTitle;
- /**
- 特殊字符所在 位置 YES = 开头,NO = 结尾, defalut is @"YES"
- */
- @property (nonatomic,assign) BOOL specialCharPositionIsFront;
- /**
- 剔除 特定字符开头的对象,不出现在最终结果集中,不要与 specialCharSectionTitle 冲突。 default is ""
- eg: 过滤所有数字开的对象 ignoreModelWithPrefix = @"0123456789"
- */
- @property (strong, nonatomic) NSString * ignoreModelWithPrefix;
- /**
- 常用错误多音字 手动映射
- 已经识别了:
- 重庆=CQ,厦门=XM,长=C,
- 如遇到默认选择错误的可以手动映射,使用格式{"匹配的文字":"对应的首字母(大写)"}
- eg:.polyphoneMapping = @{"长安":"CA","厦门":"XM"}
- 如有发现常用的多音字 也可以在issue里提出来 定期更新
- */
- @property (strong, nonatomic) NSMutableDictionary * polyphoneMapping;
- @end
|