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
- ios开发 之 中文转拼音
- iOS 中文转拼音
- iOS 中文转拼音
- ios开发系列之中文转拼音,去声调,首字母转大写
- Java 之中文转拼音
- iOS开发 汉字转拼音
- iOS - 将中文转码为拼音
- iOS 中文转拼音 多音字处理
- iOS之汉字转拼音
- iOS之汉字转拼音
- IOS开发中将中文转换为拼音首字母输出
- iOS开发中文转换成拼音以及排序
- java 中文转拼音之pinyin4j
- 【iOS开发】字符串汉字转拼音
- 将中文转为拼音 iOS
- 中文转拼音首字母
- SQL中文转拼音
- C#中文转拼音
- 多线程的简单认识(二)
- leetcode485. Max Consecutive Ones
- Codeforces 523C&D C.Name Quest【贪心】、D.Statistics of Recompressing Videos【模拟】
- JAVA异常初级的懵逼之路
- 最佳拟合直线
- ios开发 之 中文转拼音
- 批处理调用cacls修改文件权限
- 蓝桥杯算法提高——盾神与条状项链(链表)
- ionic开发——获取手机设备信息
- Linux关机命令
- Node.js 获取客户端IP, 以及nginx转发携带客户端ip配置
- Android cannot allocate memory
- (ITEXT)PDF上空白区域加入数据
- qscoj 喵哈哈村与哗啦啦村的大战(四)(树形DP求非严格路径数量)