swift利用系统库汉字转换为拼音

作者: 移动开发_ziank | 来源:发表于2016-07-22 10:06 被阅读438次

在iOS中我们做搜索时一般会遇到通过拼音搜索关键字的情况,这时候我们的判断就需要把中文汉字转换为拼音,有些时候还需要获取汉语拼音的首字母大写缩写,那么我们应该这么做呢?

有些第三方库可以完成汉字到拼音的转换,但是系统库也可以支持拼音转换的所以这里就简单介绍一下使用系统库进行转换的方法。

增加判断的函数,最好的办法是对String类添加一个extension,代码如下:

extension String {}

然后第一步,是判断字符串中有没有中文字符:

extension String {
    func isIncludeChinese() -> Bool {
        for ch in self.unicodeScalars {
            // 中文字符范围:0x4e00 ~ 0x9fff
            if (0x4e00 < ch.value  && ch.value < 0x9fff) {
                return true
            }
        }
        return false
    }
}

第二步,是转换为拼音:

func transformToPinyin() -> String {
    let stringRef = NSMutableString(string: self) as CFMutableString
    // 转换为带音标的拼音
    CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
    // 去掉音标
    CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
    let pinyin = stringRef as String;

    return pinyin
}

这样转换出来的拼音字符串,每个汉字的拼音中间都会用空格隔开,增加去掉空格的函数:

func transformToPinyinWithoutBlank() -> String {
    var pinyin = self.transformToPinyin()
    // 去掉空格
    pinyin = pinyin.stringByReplacingOccurrencesOfString(" ", withString: "")
    return pinyin
}

最后一个方法,是获取大写的首字母的方法:

func getPinyinHead() -> String {
    // 字符串转换为首字母大写
    let pinyin = self.transformToPinyin().capitalizedString
    var headPinyinStr = ""

    // 获取所有大写字母
    for ch in pinyin.characters {
        if ch <= "Z" && ch >= "A" {
            headPinyinStr.append(ch)
        }
    }
    return headPinyinStr
}

希望这些方法能够对大家有用。

相关文章

  • swift利用系统库汉字转换为拼音

    在iOS中我们做搜索时一般会遇到通过拼音搜索关键字的情况,这时候我们的判断就需要把中文汉字转换为拼音,有些时候还需...

  • iOS汉字转拼音

    汉字转拼音 系统库实现:

  • 发布 | 汉字转拼音工具

    通过查找汉字拼音库实现实时汉字转拼音的功能。 实现 加载汉字拼音对照文件pinyin.txt(4万+汉字拼音对照)...

  • 发布 | 汉字转拼音工具

    通过查找汉字拼音库实现实时汉字转拼音的功能。 实现 加载汉字拼音对照文件pinyin.txt(4万+汉字拼音对照)...

  • Python 拼音汉字互转

    汉字转拼音:pypinyin拼音转汉字:Pinyin2Hanzi Python汉字转拼音-拼音转汉字的效率测评

  • swift 汉字转拼音

    swift中提供了这样一个方法: 注释的大意是转换制定的字符串,并修改传进来的参数,只有指定范围内被修改,范围制定...

  • swift中汉字转拼音

    做搜索或者通讯录匹配时,常需要将汉字信息转成拼音来方便搜索 通过对String的扩展,我们就可以轻松做到 最近也在...

  • python汉字转拼音

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

  • Swift 基于词库的汉字转拼音

    很多时候我们都会遇到把汉字转换为拼音的需求,其实iOS就提供了把汉字转拼音的API,但是在对于多音字转换来说,我们...

  • Flutter 时间轴工具类TimelineUtil

    我的Flutter开源库:Flutter 汉字转拼音库lpinyinFlutter 常用工具类库common_ut...

网友评论

    本文标题:swift利用系统库汉字转换为拼音

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