使用CFStringTransform将汉字转成拼音,非常耗时!

最近做一个通讯录项目,需要将联系人读入app内存(通讯录有400人左右),并依照首字母排序。这里使用了在将汉字转化成拼音的时候,iOS系统自带接口:

注意self.latinString需要是一个mutable的string

        //1.将非字符串转化成拉丁字母
        CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformMandarinLatin, NO);
        CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformStripDiacritics, NO);

但是,app启动时候,非常的慢。因为在加载联系人,并且将汉字转化成pinyin。下面看看对比结果:

如果直接转化:

>> 2014-10-17 16:14:03.988 [contact_log]
ContactList.m:87 -[ContactList loadContactFromAB] :_addressBookEngine loadAdressBook
10.022583

加载一遍用了10秒。

我的做法是:既然通讯录里的人不会经常改变,可以将所有人的名字——pinyin缓存起来(字典),这样读取的时候,从字典里获取拼音,应该会快很多!结果验证了我的猜想:

>> 2014-10-17 16:18:47.992 [contact_log]
ContactList.m:87 -[ContactList loadContactFromAB] :_addressBookEngine loadAdressBook
0.641795

加载一次不到1秒了。

时间: 2024-08-29 00:59:07

使用CFStringTransform将汉字转成拼音,非常耗时!的相关文章

java将汉字转成拼音

package com.jframe.kit; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneTy

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了,过完国庆到新公司报道,感觉还不错,就是现在住的地方离新公司有点远,地铁20站,伤不起啊,我每天早上7点多就要起床,然后屁颠屁颠的去挤地铁上班,晚上下班还要挤地铁,先不说路程远,车费一天就要10几块,我的银子啊,有坐龙华线去上班的深圳程序员不?听说那条线上班高峰期很挤?我没在上班高峰期坐过那趟车,我

几个将汉字转换成拼音的在线工具

编程时,经常遇到由于汉字兼容性差带来的困扰.解决的方法之一就是使用汉语拼音来代替汉字,(使用英语翻译比较费时).将汉语转换成拼音的方法有很多,可以通过编程实现,比如借助于pinyin package,也可以使用现在工具,直接将汉语转化为拼音.需要注意的是,在汉字转化成拼音时,需要注意尽量不要保留声调,因为声调的兼容性也比较差. 支持不带声调的汉字转化成拼音的在线工具如下: http://www.atool.org/hanzi2pinyin.php http://zhongwenzhuanpiny

基于jQuery实现汉字转换成拼音代码

基于jQuery实现汉字转换成拼音代码.这是一款基于jQuery.Hz2Py.js插件实现的汉字转拼音特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <br /> <br /> <br /> <br /> <br /> <center> 在这里输入汉字<br /> <textarea id="content"> </textarea><br /&g

php 将汉字转换成拼音的方法封装成工具包

php 将汉字转换成拼音的方法封装成工具包,代码如下: <?php class PinyinTool { private static $pylist = array( 'a'=>-20319,'ai'=>-20317,'an'=>-20304,'ang'=>-20295,'ao'=>-20292, 'ba'=>-20283,'bai'=>-20265,'ban'=>-20257,'bang'=>-20242,'bao'=>-20230,'

python把汉字转换成拼音实现程序

python把汉字转换成拼音实现程序 文章一个简洁干的汉字转拼音 程序,复制下载就可以直接使用,有需要的同学可以参考一下下. #coding:utf-8 #基于python2.6 table = 'a,-20319;ai,-20317;an,-20304;ang,-20295;ao,-20292;ba,-20283;bai,-20265;ban,-20257;bang,-20242;bao,-20230;bei,-20051;ben,-20036;beng,-20032;bi,-20026;bi

C# 将汉字转化成拼音

本文来自http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html 首先下载Visual Studio International Pack 1.0,官方下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=44CAC7F0-633B-477D-AED2-99AEE642FC10&displaylang=zh-cn.下载完毕后解压,解压后可以发现7个M

java把汉字转换成拼音

汉字转换成拼音工具类: 1 import net.sourceforge.pinyin4j.PinyinHelper; 2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;

Python汉字转换成拼音

最近在使用Python做项目时,需要将汉字转化成对应的拼音.在Github上找到了一个现成的程序. Python汉字转拼音 使用实例如下: from pinyin import PinYin test = PinYin() test.load_word() print test.hanzi2pinyin(string='钓鱼岛是中国的') print test.hanzi2pinyin_split(string='钓鱼岛是中国的', split="-") 输出: ['diao', 'y