因项目需要对通讯录中的联系人进行排序,需要对中文字符进行拼音转换。其实这个转换并没有想象中的那么难(因为我们只是把中文转为拼音首字母而已,比如“王”转换为字母w就可以了,而不需要转换为完整的拼音wang)。对此,我们找到了一个简便的解决办法:一个老外(代码中签名的作者叫George)用c语言写了一个pinyinFirstLetter函数用于获取中文拼音首字母。
这个函数主要基于一个巨大的c语言char数组,把unicode字符集中所有中文的拼音首字母都映射进去了。
pinyinFirstLetter基于这么一个简单的原理:我们知道,在Objective C语言中,字符串是以unicode进行编码的。在unicode字符集中,汉字的编码范围为4E00 到 9FA5 之间(即从第19968开始的20902个字符是中文简体字符)。我们把这些字符的拼音首字母按照顺序都存放在一个char数组中。当我们查找一个汉字的拼音首字母时,只需把这个汉字的unicode码(即char强制转换为int)减去19968,然后用这个数字作为索引去找char数组中存放的字母即可。
就这样,有这个char数组为基础,一切都变得非常简单:
char pinyinFirstLetter(unsignedshort hanzi)
{
int index = hanzi - HANZI_START;
if (index >= 0&& index <= HANZI_COUNT)
{
returnfirstLetterArray[index];
}
else
{
return hanzi;
}
}
至于排序,我们可以把要排序的中文(为简便起见,我们假设这些要排序的中文都只有一个字)放到NSArray中,然后利用NSArray的sortedArrayUsingComparator:方法进行排序即可。sortedArrayUsingComparator:方法是NSArray内部元素的比较方法。你只需要为这个方法提供一个块作为参数即可。然后在这个块中,对两个元素的大小进行比较,并返回一个NSComparisonResult(NSComparisonResult枚举用于表示比较的结果:等于、小于、大于):
NSArray *sortedArray=[mArray sortedArrayUsingComparator:^(id a, id b) {
char c1=pinyinFirstLetter([(NSString*)a characterAtIndex:0]);
char c2=pinyinFirstLetter([(NSString*)b characterAtIndex:0]);
NSString* s1=[[NSStringstringWithFormat:@"%c",c1] uppercaseString];
NSString* s2=[[NSStringstringWithFormat:@"%c",c2] uppercaseString];
return [s1 compare:s2];
}];
pinyin.h、pinyin.c文件我已上传附件,有需要的可以下载直接引入。
分享到:
相关推荐
标题“SQL按拼音首字母排序”以及描述中的关键词“SQL按拼音排序”,指向了一种特殊的数据排序需求:在数据库中,针对包含中文字符的字段,按照中文拼音的首字母进行排序。这在处理大量含有中文名称、地点等信息的...
微信小程序-汉字拼音首字母排序选择,包括了一个微信小程序富文本解析函数库,收录字符的Unicode编码范围为19968至40869,汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell,改动为判定输入数组...
对于需要进行中文文本检索、排序等操作的应用来说,能够快速提取汉字的拼音首字母是一种高效的方法。下面将对提供的VB代码进行详细解读,并深入探讨其中的关键知识点。 #### 一、函数概述 该代码段提供了两个函数...
SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母SQL取得汉字拼音首字母
在本项目"Qt提取汉字拼音首字母"中,我们将探讨如何利用Qt来处理汉字与拼音之间的转换,特别是在获取汉字的拼音首字母方面。 首先,我们需要理解汉字与拼音的关系。汉字是中文的主要书写系统,而拼音是用拉丁字母来...
- 数据排序:在列表展示中文内容时,可以按照拼音首字母进行排序,如通讯录中的姓名排序。 - 拼音输入法:输入法软件中,需要将用户输入的汉字转化为拼音,以便找到对应的键位。 总的来说,汉字转拼音及获取首...
微信小程序 首字母排序选择 (源码)微信小程序 首字母排序选择 (源码)微信小程序 首字母排序选择 (源码)微信小程序 首字母排序选择 (源码)微信小程序 首字母排序选择 (源码)微信小程序 首字母排序选择 (源码)微信小...
使用MySQL函数,实现获取汉字拼音首字母。在SQL语句中传入汉字返回对应的首字母
在线中英文根据首字母排序工具: http://tools.jb51.net/aideddesign/zh_paixu 您可能感兴趣的文章:mysql的中文数据按拼音排序的2个方法mysql如何按照中文排序解决方案MySQL按照汉字的拼音排序简单实例
1. **数据排序**:如果你有一列包含汉字的数据,可以先用“PINY”函数得到拼音首字母,然后根据这些首字母进行排序,这样能快速整理出按照拼音顺序排列的数据。 2. **数据检索**:创建一个基于拼音首字母的索引,...
这个功能允许将汉字转换为其对应的拼音首字母,从而实现基于拼音的快速查找或排序。 在PowerBuilder 9.0中,实现汉字转拼音首字母的方法通常涉及到以下步骤: 1. **引入库**:首先,你需要引入能够处理汉字转拼音...
在JavaScript(JS)编程中,有时我们需要处理中文字符并获取其对应的拼音首字母,以便进行各种操作,如快速查找、排序等。这个场景通常出现在构建具有搜索功能的Web应用,尤其是中文内容丰富的网站。本文将深入探讨...
在JavaScript编程中,对中文字符串进行按首字母排序是一个常见的需求,特别是在构建具有搜索和过滤功能的用户界面时。这个任务涉及到对汉字的处理,因为汉字不像英文字符那样可以直接进行字母顺序比较。以下是对该...
为了实现汉字到拼音首字母的转换功能,我们可以定义一个自定义函数,该函数接收一个包含中文字符的字符串作为输入,然后逐个字符地进行处理,最终返回一个由这些字符的拼音首字母组成的字符串。 #### 三、具体实现...
当我们处理中文字符时,有时需要将汉字转换为拼音或提取其首字母,这在比如搜索、排序或生成缩略词时非常有用。本教程将深入讲解如何在Qt环境中利用C++实现汉字到拼音和首字母的转换。 首先,要进行汉字转拼音,...
在Android开发中,为了实现类似通讯录的快速检索功能,我们常常需要将汉字转换为拼音,以便用户可以通过首字母进行筛选。...同时,由于工具类的复用性,它也可以被应用到其他需要按拼音首字母排序或检索的场景中。
在描述中提到的“带有拼音首字母排序的listview”是指实现一个类似手机通讯录的效果,用户可以通过点击字母表快速定位到对应的联系人。这个功能在中文环境下特别实用,能够提高用户的查找效率。以下将详细介绍如何...
这涉及到对汉字拼音首字母的处理,比如Jian4(简)的首字母是"J"。这个过程可能包括对全拼进行处理,得到每个汉字的首字母,然后进行排序和搜索。 7. **UI设计**: 选择城市界面需要有清晰的搜索框和ListView。搜索...
但是,由于iOS原生的数组排序方法并不支持直接对汉字按拼音首字母排序,所以我们需要借助第三方库的帮助。这里推荐使用`PinyinHelper`库,这是一个小巧且高效的库,能够帮助我们获取汉字的拼音并进行排序。 要使用`...
在Oracle数据库环境中,有时我们需要对汉字进行处理,例如获取汉字的拼音或首字母,这在中文数据检索、排序或建立索引时非常有用。本文将详细介绍如何使用PL/SQL存储过程来实现这一功能。 首先,我们需要理解Oracle...