使用CFStringTransform將漢字轉成拼音,非常耗時!,cfstringtransform

來源:互聯網
上載者:User

使用CFStringTransform將漢字轉成拼音,非常耗時!,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 loadAdressBook10.022583

載入一遍用了10秒。


我的做法是:既然通訊錄裡的人不會經常改變,可以將所有人的名字——pinyinDic緩衝起來(字典),這樣讀取的時候,從字典裡擷取拼音,應該會快很多!結果驗證了我的猜想:

    //1.先從緩衝中獲得latin,然後再判斷是否存在,再將非字串轉化成拉丁字母    NSString* latin = [pinyinDic objectForKey:self.fullName];    if (latin) {        self.latinString = latin;    }    else {        CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformMandarinLatin, NO);        CFStringTransform((__bridge CFMutableStringRef)self.latinString, NULL, kCFStringTransformStripDiacritics, NO);        [pinyinDic setObject:self.latinString forKey:self.fullName];    }
運行結果是:

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

載入一次不到1秒了。

注意:這個時間是真機聯調的時候列印的時候。


EXCEL漢字轉拼音怎轉

建議你複製到WORD中,WORD中專門有一個按鈕可以直接轉化為拼音。轉化完後,再複製到EXCEL中即可
 
excel怎把漢字轉成拼音

hi.baidu.com/...d.html
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.