iOS-中文排序

作者: linbj | 来源:发表于2017-06-05 15:51 被阅读44次

中文排序想想就心累,之前尝试过很多方法也用过某些框架,但是效果并不好。

偶然看到一个方法

//根据系统语言判断两个string的顺序并返回NSComparisonResult值表明词汇排序
- (NSComparisonResult)localizedCompare:(NSString *)string;
037DF378-1B29-41F5-990E-949DAA097E6A.png
NSArray *arr = @[@"重要",@"重点",@"重复",@"凑傻逼", @"凑傻", @"凑合", @"瞅啥", @"上海薛之谦", @"霞浦李易峰"];
NSArray *arrr = [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    if ([obj1 localizedCompare:obj2] == 1) {
        return NSOrderedDescending;
    } else {
        return NSOrderedAscending;
    }
}];

输出为:

DADDA4E4-2816-4596-A6CC-2EBA4DE66ED6.png
  • 中文转拼音的方法
    NSString *hanziText = @"我是中国人";
    if ([hanziText length]) {
        NSMutableString *ms = [[NSMutableString alloc] initWithString:hanziText];
        if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {
            NSLog(@"pinyin: %@", ms);
        }
        if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {
            NSLog(@"pinyin: %@", ms);  
        }  
    }

0E0378D1-B70C-4530-8BB1-D0F1FBD41628.png

不同拼写之间转写
除了英语这个重大例外(和它那令人愉快的拼写不一致),书写系统一般是将语言音调编码成一致的符号表示。欧洲语言一般使用拉丁字母(外加一些变音符),俄罗斯用西里尔字母,日本用平假名和片假名,泰国、韩国和阿拉伯国家也都有自己的字母。

虽然每种语言都有特殊的音调列表,也许有些其他语言会缺失,所有主要书写系统的交集已经足以让你高效的在不同字母之间转写(不要跟翻译搞混了)。

CFStringTransform 可以在拉丁语和阿拉伯语、西里尔语、希腊语、韩语(韩国)、希伯来语、日语(平假名和片假名)、普通话、泰语之间来回转写。

3E326002-C4E8-4ACB-8B15-62C86E21B56C.png

参考文献
CFString​Transform

相关文章

  • iOS-中文排序

    中文排序想想就心累,之前尝试过很多方法也用过某些框架,但是效果并不好。 偶然看到一个方法 输出为: 中文转拼音的方...

  • iOS-排序算法

    传送门 iOS-冒泡排序(Bubble Sort)[https://www.jianshu.com/p/e2eef...

  • iOS-数组排序

    首先提供一些排序文章供大家参考学习常用排序算法总结iOS-八大基本排序Sort 各类算法和时间复杂度分析 关于iO...

  • ios 数组排序 中文

    1.数组排序 支持中文 2.多条件排序 如果用中文的key 排序结果可能不正确

  • iOS-排序

    高级排序:按描述进行排序(制定一套排序规则 ) 4 字典排序 5 简单测试代码

  • JS排序

    1、数字排序 2、字符串排序 3、中文排序 4、中英文数字字符串排序

  • iOS 中文排序、数组、字典排序

    数组内中文排序 看够了复杂的中文排序封装代码,让我们来点小清新,其实苹果不但为我们提供好了排序方法,并且带有多音字...

  • Java中文按照拼音排序(含中文)

    添加maven,中文转拼音 工具jar 中文转拼音 排序封装类 使用

  • ios-数组排序

    需求: 需要对数组noReadArray按照最后的时间lastTimej进行排序 实现方式: 使用场景: 1、需要...

  • iOS-排序,比较

    BOOL result=[acompare:b]; if(result==NSOrderedSame){ a= b...

网友评论

    本文标题:iOS-中文排序

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