欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios开发 之 中文转拼音

程序员文章站 2022-07-01 18:32:30
ios开发 之 中文转拼音。在项目中显示通讯录往往需要把中文名字转换为拼音来进行排序,为此我封装了一个类,将中文转为拼音分享给大家。 思路主要为: 1、使用[CFStringT...

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 nil;
    }
    // 首字母存储
    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];
    
}

ios开发 之 中文转拼音

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