使用CFStringTransform方便的进行中文名字的排序

转载 2015年07月09日 16:37:21

#import <Foundation/Foundation.h>


@interface NSArray (chinese)


+(NSArray *)sortedArrayByChinese: (NSArray*) array;


@end


@interface Common_Manage : NSObject


+ (NSComparisonResult) CompareString: (NSString*) strSrc with:(NSString*) str2; 


@end



#import "Common_Manage.h"


@implementation Common_Manage


+(NSComparisonResult)CompareString:(NSString *)strSrc with:(NSString *)str2{

    CFStringRef cfstringSrc = CFStringCreateWithCString(NULL, strSrc.UTF8String, kCFStringEncodingUTF8);

    CFMutableStringRef src = CFStringCreateMutableCopy(NULL, 0, cfstringSrc);

    CFStringTransform(src, 0, kCFStringTransformToLatin, false);

    CFStringTransform(src, 0, kCFStringTransformStripCombiningMarks, false);

    

    CFStringRef cfstringto = CFStringCreateWithCString(NULL, str2.UTF8String, kCFStringEncodingUTF8);

    CFMutableStringRef srcto = CFStringCreateMutableCopy(NULL, 0, cfstringto);

    CFStringTransform(srcto, 0, kCFStringTransformToLatin, false);

    CFStringTransform(srcto, 0, kCFStringTransformStripCombiningMarks, false);

    

    CFComparisonResult result = CFStringCompare(src, srcto, kCFCompareCaseInsensitive);

    NSComparisonResult r = (NSComparisonResult)result;

    return r;

}


@end


@implementation NSArray (chinese)


+(NSArray*) sortedArrayByChinese: (NSArray*) array

{

    NSArray* ret = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

        NSComparisonResult ret = [Common_Manage CompareString:obj1 with:obj2];

        return ret;

    }];

    

    return ret;

}


@end



********************使用*********************

NSArray *array = [[NSArray alloc]initWithObjects:@"阿诶",@"啊啊",@"刘扬",@"刘江", nil];

    NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

        NSString *name1 = obj1;

        NSString *name2 = obj2;

        NSComparisonResult e = [Common_Manage CompareString:name1 with:name2];

        return e;

    }];

    for (int i = 0; i < [array count]; i++) {

        NSLog(@"%@",[sorted objectAtIndex:i]);

    }


备注:来源于http://blog.csdn.net/chiyun1/article/details/45042105



相关文章推荐

使用CFStringTransform方便的进行中文名字的排序

在学习tableview的使用中,涉及到了通讯录中中文姓名的排序问题,现在网上好像大部分方法,都是使用一位大牛写的pinyin.h文件,将每个汉字对应的拼音首字母映射了起来。这个方法在仅仅进行首字母的...

找到launcher上面的程序并进行名字的排序(中文跟英文)

/*  * Copyright (C) 2010 The Android Open Source Project  *  * Licensed under the Apache License,...

利用第三方框架获取通讯录(AddressBook),以及以名字对通讯录进行排序

利用系统自带的AddressBook.framework和AddressBookUI.framework框架获得通讯录,相对比较复杂 下面就来介绍一个利用第三方框架来获取通讯录:第三方框架:LHDA...

在java中使用TreeMap进行中文排序

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://onbus.blogbus.com/logs/11628621.html 最近遇到需要按一个mo...
  • memray
  • memray
  • 2012-04-28 11:34
  • 3349

java使用Unicode码对中文进行排序

在Java中,对一个数组或列表(在本文中统称为集合)中的元素排序,是一个很经常的事情。好在Sun公司在Java库中实现了大部分功能。如果集合中的元素实现了Comparable接口,调用以下的静态(st...

对Remoting进行封装,方便使用

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using...

使用support v4包里的LocalBroadcastManager类方便得进行Service和Activity的交互

<applicati

UVA 10815Andy's First Dictionary【set使用+set排序】好方便啊!

Andy's First Dictionary Andy, 8, has a dream - he wants to produce his very own dictionary. This ...

方便的使用MP3排序

  • 2013-01-31 15:32
  • 471KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)