美文网首页
iOS 将中文转成拼音,并拼接

iOS 将中文转成拼音,并拼接

作者: _好久不见_ | 来源:发表于2016-11-15 11:32 被阅读282次

主要使用CFStringTransform方法:

  • Object-C : Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);

  • Swift : public func CFStringTransform(_ string: CFMutableString!, _ range: UnsafeMutablePointer!, _ transform: CFString!, _ reverse: Bool) -> Bool

其中string参数是要被转换的中文字符串,需要将它转化成mutable的,该方法将它最终转成中文的拼音字符串,系统会将每个汉字的拼音用空格分隔开,可将空格替换将其拼接在一起。range是要转换的范围,同时输出转换后改变的范围,如果为nil,代表全部转换,也可传入UnsafeMutablePointer(bitPattern: 0)。transform则指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。

transform 参数值 说明
kCFStringTransformStripCombiningMarks 删除重音符号
kCFStringTransformToLatin 中文的拉丁字母
kCFStringTransformFullwidthHalfwidth 全角半宽
kCFStringTransformLatinKatakana 片假名拉丁字母
kCFStringTransformLatinHiragana 平假名拉丁字母
kCFStringTransformHiraganaKatakana 平假名片假名
kCFStringTransformMandarinLatin 普通话拉丁字母
kCFStringTransformLatinHangul 韩文的拉丁字母
kCFStringTransformLatinArabic 阿拉伯语拉丁字母
kCFStringTransformLatinHebrew 希伯来语拉丁字母
kCFStringTransformLatinThai 泰国拉丁字母
kCFStringTransformLatinCyrillic 西里尔拉丁字母
kCFStringTransformLatinGreek 希腊拉丁字母
kCFStringTransformToXMLHex 转换为XML十六进制字符
kCFStringTransformToUnicodeName 转换为Unicode的名称
kCFStringTransformStripDiacritics 转换成不带音标的符号
Object-C
- (NSString *)pinYinWithString:(NSString *)chinese{
    NSString  * pinYinStr = [NSString string];
    if (chinese.length){
        NSMutableString * pinYin = [[NSMutableString alloc]initWithString:chinese];
    
        //先转换为带声调的拼音
        if (CFStringTransform((__bridge CFMutableStringRef)pinYin, 0, kCFStringTransformMandarinLatin, NO)) {
            NSLog(@"pinyin: %@", pinYin);
        }
    
        //再转换为不带声调的拼音
        if (CFStringTransform((__bridge CFMutableStringRef)pinYin, 0, kCFStringTransformStripDiacritics, NO)) {
            NSLog(@"pinyin: %@", pinYin);
        
            //再去除空格,将拼音连在一起
            pinYinStr = [NSString stringWithString:pinYin];
        
            // 去除掉首尾的空白字符和换行字符
            pinYinStr = [pinYinStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

            // 去除掉其它位置的空白字符和换行字符
            pinYinStr = [pinYinStr stringByReplacingOccurrencesOfString:@"\r" withString:@""];
            pinYinStr = [pinYinStr stringByReplacingOccurrencesOfString:@"\n" withString:@""];
            pinYinStr = [pinYinStr stringByReplacingOccurrencesOfString:@" " withString:@""];
        }
    }
    return pinYinStr;
}
Swift

在String的扩展中添加该方法:

extension String{

    func pinYin() ->String{
        var pinYinStr = String();
        let pinyin:CFMutableString = NSMutableString(string: self) as CFMutableString;
    
        //先转换为带声调的拼音
        if CFStringTransform(pinyin, nil, kCFStringTransformMandarinLatin, false){
            print(pinyin);
        }
    
        //再转换为不带声调的拼音
        if CFStringTransform(pinyin, nil, kCFStringTransformStripDiacritics, false){
            print(pinyin);
        
            //再去除空格,将拼音连在一起
            pinYinStr = pinyin as String;
            pinYinStr = pinYinStr.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
            pinYinStr = pinYinStr.replacingOccurrences(of: "\r", with: "")
            pinYinStr = pinYinStr.replacingOccurrences(of: "\n", with: "")
            pinYinStr = pinYinStr.replacingOccurrences(of: " ", with: "")
        }
        return pinYinStr;
    }

}

相关文章

  • iOS 将中文转成拼音,并拼接

    主要使用CFStringTransform方法: Object-C : Boolean CFStringTrans...

  • iOS-将中文转成拼音的方法

    代码如下 运行结果如下

  • iOS将汉字转成拼音

    在ios开发中经常碰到做通讯录需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 用kCFStringTra...

  • iOS将汉字转成拼音

    + (NSString*)transform:(NSString*)chinese{NSMutableString...

  • 将汉字转成拼音显示

    将汉字转成拼音代码

  • 如何使用Java将中文转成拼音呢?

    最近最项目遇到一个需求,就是将中文汉字转成拼音~效果截图:当时我输入中文:你好世界 实现步骤 1、pom.xml ...

  • IOS 中文转拼音

    IOS开发中,时常会遇到将中文转成拼音的需求,如按首字母顺序排序等。遇到这样的问题很多人第一反应就是寻找第三方SD...

  • iOS 获取汉字的拼音

    在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 代码实现 用kCFStringTra...

  • iOS 汉字转拼音

    在ios开发中经常碰到做通讯录需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 用kCFStringTra...

  • python汉字转拼音

    场景说明 把中文汉字、转成汉语拼音,包括: 纯汉字转拼音 汉字里面加有字母转拼音 转加声调的拼音 转用数字表示声调...

网友评论

      本文标题:iOS 将中文转成拼音,并拼接

      本文链接:https://www.haomeiwen.com/subject/mzbkpttx.html