ios开发之中文转拼音

释放双眼,带上耳机,听听看~!

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

 

思路主要为:

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];
}

 

源码请移步:https://www.jishudog.com/30451/html

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

 

人已赞赏
iOS文章

ios开发之简体和繁体中文转换

2020-5-11 17:04:14

iOS文章

ios开发之NSObject详解

2020-5-11 18:18:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索