ios开发 之 中文转拼音

来源:互联网 发布:java在线 编辑:程序博客网 时间:2024/04/30 07:51


原文地址:http://blog.csdn.net/zeng_zhiming/article/details/68927728


在项目中显示通讯录往往需要把中文名字转换为拼音来进行排序,为此我封装了一个类,将中文转为拼音分享给大家。


思路主要为:

1、使用[CFStringTransform]的[kCFStringTransformMandarinLatin]可以将中文转为带音调的拼音

2、使用[CFStringTransform]的[kCFStringTransformStripDiacritics]可以去掉音调符号

3、遍历字符串,将每个字符转为拼音后可以只取拼音首字母来进行使用


废话不多说,直接上代码:

////  NSString+PinYin.m//  ZMPinYinDemo////  Created by ZengZhiming on 2017/3/31.//  Copyright © 2017年 菜鸟基地. All rights reserved.//#import "NSString+PinYin.h"@implementation NSString (PinYin)/** 将中文字符串转换为拼音格式(带声调) @return 返回带声调拼音字符串 */- (NSString *)transformToPinyinTone{    // 空值判断    if (IsNullString(self)) {        return @"";    }    // 将字符串转为NSMutableString类型    NSMutableString *string = [self mutableCopy];    // 将字符串转换为拼音音调格式    CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformMandarinLatin, NO);    // 返回带声调拼音字符串    return string;}/** 将中文字符串转换为拼音格式(不带声调) @return 返回不带声调拼音字符串 */- (NSString *)transformToPinyin{    // 空值判断    if (IsNullString(self)) {        return @"";    }    // 将字符串转为NSMutableString类型    NSMutableString *string = [self mutableCopy];    // 将字符串转换为拼音音调格式    CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformMandarinLatin, NO);    // 去掉音调符号    CFStringTransform((__bridge CFMutableStringRef)string, NULL, kCFStringTransformStripDiacritics, NO);    // 返回不带声调拼音字符串    return string;}/** 将中字符串转换为拼音首字母 @return 拼音首字母字符串 */- (NSString *)transformToFirstLetter{    // 空值判断    if (IsNullString(self)) {        return @"";    }    // 首字母存储    NSMutableString *firstLetterStirng = [NSMutableString string];    // 遍历字符串中的所有字符    for (NSUInteger i = 0; i < self.length; i++) {        // 将每个字符截取后进行拼音转换        NSString *charStr = [self substringWithRange:NSMakeRange(i, 1)];        NSString *pinyin = [charStr transformToPinyin];        // 存储转换后的拼音首字母        [firstLetterStirng appendString:[pinyin substringToIndex:1]];    }    // 返回中文首字母字符串    return [firstLetterStirng uppercaseString];}@end

使用也非常简单:

/** 拼音转换按钮点击 */- (IBAction)onPinYinAction:(UIButton *)sender {        // 显示带声调的拼音    _pinyinToneLabel.text = [_textField.text transformToPinyinTone];    // 显示不带声调的拼音    _pinyinLabel.text = [_textField.text transformToPinyin];    // 显示拼音首字母    _firstLetterlLabel.text = [_textField.text transformToFirstLetter];    }



Demo请移步:https://github.com/zeng-zhiming/ZMPinYinDemo


如果大家有更好的拼音转换方式,请在博客留言,本人不胜感激。


原文地址:http://blog.csdn.net/zeng_zhiming/article/details/68927728


2 0
原创粉丝点击