swift如何利用系统库将汉字转换为拼音详解

 更新时间:2017年10月19日 10:07:40   作者:iOS_ziank  
将汉字转换为拼音更利于我们大家开发搜索功能,所以这篇文章主要给大家介绍了关于swift如何利用系统库将汉字转换为拼音的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

相信大家在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中内置的集合类型学习笔记

    Swift中内置的集合类型学习笔记

    Swift中自带数组、set、字典三大集合类型,这里将学习过程中的基础的Swift中内置的集合类型学习笔记进行整理,需要的朋友可以参考下
    2016-06-06
  • 详解Swift中的Characters字符类型与String字符串类型

    详解Swift中的Characters字符类型与String字符串类型

    Swift中的字符串操作相当便捷,下面我们来详解Swift中的Characters字符类型与String字符串类型,需要的朋友可以参考下
    2016-06-06
  • Swift实现表格视图单元格单选(1)

    Swift实现表格视图单元格单选(1)

    这篇文章主要为大家详细介绍了Swift实现表格视图单元格单选,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Swift免费短信验证码实现及动态倒计时功能

    Swift免费短信验证码实现及动态倒计时功能

    这篇文章主要介绍了Swift免费短信验证码实现及动态倒计时功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • swift实现随机背景色

    swift实现随机背景色

    这篇文章主要为大家详细介绍了swift实现随机背景色,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 深入探究Swift枚举关联值的内存

    深入探究Swift枚举关联值的内存

    这篇文章主要给大家介绍了关于Swift枚举关联值的内存的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Swift具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • Swift之UITabBarController 导航控制器的自定义

    Swift之UITabBarController 导航控制器的自定义

    本文给大家介绍swift导航控制器之UITabBarController,本文通过代码实例给大家讲解swift导航控制器,导航控制器类继承UITabBarController,代码简单易懂,需要的朋友可以参考下
    2015-10-10
  • Swift中defer关键字推迟执行示例详解

    Swift中defer关键字推迟执行示例详解

    这篇文章主要给大家介绍了关于Swift中defer关键字推迟执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • LeetCode 题解 Swift 有效的完全平方数

    LeetCode 题解 Swift 有效的完全平方数

    这篇文章主要为大家介绍了LeetCode 题解 Swift 有效的完全平方数方案示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Swift使用enum抹平数组元素差异实例详解

    Swift使用enum抹平数组元素差异实例详解

    这篇文章主要为大家介绍了Swift使用enum抹平数组元素差异实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论