汉字转拼音 汉字排序功能

.h文件

#import <Foundation/Foundation.h>

@interface ChineseTool : NSObject

/**

*  汉字转拼音

*

*  @param chinese         要转换的汉字

*  @param stripDiacritics 是否需要音标

*

*  @return 拼音

*/

+ (NSString *)pinyinForChinese:(NSString *)chinese stripDiacritics:(BOOL)stripDiacritics;

/**

*  对汉字数组进行排序

*

*  @param chineseArr 汉字数组

*

*  @return 排好序的数组

*/

+ (NSArray *)sortForChineseArr:(NSArray *)chineseArr;

@end

.m文件

#import "ChineseTool.h"

@implementation ChineseTool

+ (NSString *)pinyinForChinese:(NSString *)chinese stripDiacritics:(BOOL)stripDiacritics

{

if ([chinese length]) {

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

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

if (stripDiacritics) {

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

return ms;

}

} else {

return ms;

}

}

}

return nil;

}

+ (NSArray *)sortForChineseArr:(NSArray *)chineseArr

{

NSMutableArray *pinyinArr = [NSMutableArray arrayWithCapacity:0];

for (NSString *str in chineseArr) {

NSString *pinyin = [[self pinyinForChinese:str stripDiacritics:YES] stringByReplacingOccurrencesOfString:@" " withString:@""];

[pinyinArr addObject:pinyin];

}

NSDictionary *dict = [NSDictionary dictionaryWithObjects:chineseArr forKeys:pinyinArr];

NSArray *sortPinyinArr = [pinyinArr sortedArrayUsingSelector:@selector(compare:)];

NSArray *chineseSortArr = [dict objectsForKeys:sortPinyinArr notFoundMarker:[NSNull null]];

return chineseSortArr;

}

时间: 2024-10-31 20:54:59

汉字转拼音 汉字排序功能的相关文章

杨泽业:让你的网站无限可能之给你的网站增加汉字转拼音的新功能

一个网站可以无限可能,你的网站可以成就你的事业! 这不是一句空话,而是一个可行的方案. 今天泽业建站网站长杨泽业来给大家讲解一下最简单的网站功能的增加. 现在增加的是[汉字转拼音]的新功能为例,让你了解一下,你的网站是可以增加无数个功能的. 因为我在和别人交流的时候,很多人把名字发过来,居然经常不能完全正确的读出名字,这时候,就需要把汉字转为拼音了.还有时候,帮客户注册域名的时候,也必须准确无误的知道汉字的拼音,才能注册域名.所以对于我们做网络的人来说,汉字转拼音的功能经常用到. 我在站长下载里

中文汉字转换拼音PHP类

1 <?php 2 /** 3 * 中文汉字转换拼音类 4 * 功能支持 5 * 1.支持中文转换全拼 6 * 2.支持中文转换简拼(首字母) 7 * 3.支持转换的字符串返回格式设置(字符中间的间隔字符) 8 * 方法包含四个可以直接调用 请查看类注释 以及调用示例 9 * getJp.getQp.getJpDelimiter.getQpDelimiter 10 * 11 * 以下是研究本代码看懂本类需要的知识点: 12 * 1.掌握PHP的面向对象编程的基本用法 13 * 2.掌握计算机AS

用jpinyin实现汉字转拼音功能

一.简介 项目地址:https://github.com/stuxuhai/jpinyin JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进. [JPinyin主要特性]1.准确.完善的字库:Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字:2.拼音转换速度快:经测试,转换Unicode编码从4E00-9FA5范围的20902个汉字,JPinyin耗

[转]Java汉字按照拼音排序

最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = { "张三", "李四", "王五", "赵六", "JAVA", "123", &q

MySQL按照汉字的拼音排序、按照首字母分类

项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了),直接在查询语句后面添加ORDER BY name ASC,查询结果将按照姓氏的升序排序:如果存储姓名的字段采用的是utf8字符集,需要在排序的时候对字段进行转码,对应的代码是ORD

MySQL按照汉字的拼音排序

按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了). 直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序: 如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码:对于的代码是  or

MySQL按照汉字的拼音排序(转)

按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了). 直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序: 如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码:对于的代码是  or

汉字转拼音,中文拼音排序器

汉字转拼音 NSMutableString *ms = [[NSMutableString alloc] initWithString:@"我是中国人"]; if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) { NSLog(@"Pingying: %@", ms); // wǒ shì zhōng guó rén } if (

TP5 按照汉字的拼音排序

业务需求:接口返回一个列表,但是这个列表要求按一定的条件排序,条件如下: 1,某字段(field1)为null的排前面 2,某字段(field2)为null的排前面 3,姓名(field3)按照汉字的拼音排序 4,某字段(field4)按照ID倒序排序 乍一听有点复杂,其他的不多说,这篇文章主要讲怎么在TP5里实现按照汉字的拼音排序 多字段排序这里要介绍到TP5 一个类 想了解的可以参考这篇文章<TP5多字段排序> 查阅了资料,网上千篇一律,总结了两点: 1,如果存储姓名的字段采用的是GBK字