iOS 中文转拼音

IOS数组按中文关键字以字母序排序 IOS项目中会用到对通讯录的联系人或是会员按姓名为关键字排序,因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将“王”变成“W”,完整文章(传送门)。     其中他通过pinyinFirstLetter函数获取中文拼音,函数原理是:“pinyin 阅读详情

之前做通讯录相关的一些App时,有一个比较常用的算法是将汉字转换成拼音。当时采用的做法是:将各个拼音段的首个汉字(按Unicode排序)做成两个数组,一个数组存拼音,另一个数组存拼音对应首个汉字的Unicode。如果要获取某个汉字的拼音,可以折半查找法找的对应拼音。最近无意间发现CFStringTransform这篇文章后,发现系统本身已经提供了一个这样的函数。

CFStringTransform

iOS在CoreFoundation中提供了CFStringTransform函数,但在Foundation中却没有相对应的方法。它的定义如下:

Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);

其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为NULL,视为全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。如果转换成功就返回true,否则返回false。

如果要进行汉字到拼音的转换,我们只需要将transform设定为kCFStringTransformMandarinLatin或者kCFStringTransformToLatin(kCFStringTransformToLatin也可适用于非汉字字符串):

CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, CFSTR("中国"));
CFStringTransform(string, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@", string);

这段代码将输出:

2013-11-22 14:41:14.644 Test[2436:907] zhōng guó

可以看出,CFStringTransform正确的输出了“中国”的拼音,而且还带上了音标。有时候我们不需要音标怎么办?还好CFStringTransform同时提供了将音标字母转换为普通字母的方法kCFStringTransformStripDiacritics。我们在上面的代码基础上再加上这个:

CFStringTransform(string, NULL, kCFStringTransformStripDiacritics, NO);
NSLog(@"%@", string);

那么最终将输出:

2013-11-22 14:47:00.380 Test[2470:907] zhong guo
iOS中文关键字排序算法及实现代码 的函数,它接受一个中文字符串作为参数,并返回对应的拼音字符串。通过上述代码示例,我们可以实现对包含中文关键字的数组按照中文关键字的字母序进行排序的功能。接下来,我们可以使用这个中文转拼音的函数来实现对包含中文关键字的数组进行排序的功能。接下来,我们可以使用这个中文转拼音的函数来实现对包含中文关键字的数组进行排序的功能。的函数,它接受一个包含中文关键字的数组作为参数,并返回按照中文关键字的字母序进行排序后的数组。的函数,它接受一个包含中文关键字的数组作为参数,并返回按照中文关键字的字母序进行排序后的数组。 阅读详情

相关推荐

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力,而在这一过程中,企业架构(EA)发挥着至关重要的作用。这本白皮书《世界级企业架构:建立和发展EA能力的领导者方法》提供了深入的理论指导,为企业如何通过企业架构实现有效的数字化转型提供了清晰的路径。本篇文章将从,解读该书的核心内容,揭示企业在数字化转型过程中应该如何通过EA的构建和实施,驱动组织变革与技术创新。

AZone架构院的博客 3172

(转)使用CFStringTransform将汉字转换为拼音

原文出自这里 CFStringTransform iOS在CoreFoundation中提供了CFStringTransform函数,但在Foundation中却没有相对应的方法。它的定义如下: Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean...

weixin_30610755的博客 218

Python实战:3步搞定DICOM转JPG/PNG(附批量处理脚本)

本文详细介绍了如何使用Python在3步内将DICOM医学影像转换为JPG/PNG格式,并提供了批量处理脚本。通过Pydicom、Pillow和NumPy库的组合,解决了像素值处理、批量转换效率和医学图像特性保留等关键问题,适合医疗AI开发者和放射科医生快速集成到工作流中。

numpy6sculptor的博客 591

C#实现字符串(汉字)比较

C#实现字符串(汉字)比较前言关键点总结 前言 继续上篇文章的内容,我们的调查问卷有一部分是用汉字描述的多选题,而问卷星在输出问卷的时候直接就是将汉字进行了输出,而我们在进行数据分析(二元logistic)的时侯要将每个字符串拆开,这就需要对每个字符串进行比较输入。 这里其他部分和上一篇文章的大致思路一样,最核心的就是IndexOf的使用。 关键点 这个项目中最核心的是IndexOf的使用,在java、C#等中最常用的判断字符串的方法 ,IndexOf可以返回指定字符串值在字符串中的位置,而我们只要

m0_53169499的博客 1233

基于继电器与三极管的自动水泵控制器DIY:从电路原理到PCB制作实战

继电器作为一种利用电磁原理实现电路通断控制的电气开关,其核心价值在于通过小电流信号控制大电流负载,实现强弱电之间的安全隔离。在自动化控制领域,继电器常与三极管等半导体器件配合,构成驱动电路,将微弱的传感器信号放大,从而可靠地控制电机、水泵等执行机构。这种组合技术广泛应用于工业控制、智能家居及各类电子DIY项目中,例如实现水箱水位的自动检测与控制。本文将以一个典型的自动水泵控制器项目为例,深入剖析如何利用继电器与三极管搭建水位检测与驱动电路,并详细讲解从电路设计、PCB自制(热转印法)到系统调试的完整工程实践

weixin_31774841的博客 347

全志V3S开发板实战:从零构建嵌入式Linux系统

本文提供了一份针对全志V3S开发板(如LicheePi Zero)的零基础教程,详细指导如何从零开始构建嵌入式Linux系统。内容涵盖编译环境搭建、交叉工具链配置、U-Boot引导程序编译与烧录、Linux内核定制与编译,以及使用Buildroot构建根文件系统,最终实现系统成功启动,帮助开发者深入理解嵌入式系统构建全流程。

tensor9flow的博客 575

iOS-使用CFStringTransform将汉字转换为拼音

CFStringTransform-知识要点 [详解] 1.简介 iOS在CoreFoundation中提供了CFStringTransform函数,但在 Foundation中却没有相对应的方法。它的定义如下: Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CF

NewLifeBegin_ 2260

MySQL表名大小写敏感问题终极解决:lower_case_table_names=1不生效的3个隐藏坑

本文深入剖析了MySQL表名大小写敏感问题中,设置lower_case_table_names=1参数不生效的三个核心原因。关键在于理解该参数只能在数据库初始化前设置,并需排查配置文件优先级与正确停止服务的顺序。文章提供了从Windows迁移到Linux的完整避坑指南与验证方法,帮助DBA和开发者彻底解决这一跨平台兼容性难题。

weixin_29229055的博客 391

iOS 获取汉字的拼音 CFStringTransform

利用CFStringTransform方法,获取汉字的拼音;以及CFStringTransform方法的使用详解 CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);

tanyufeng_521的专栏 1303

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

【Nginx学习】5步揭秘Nginx邮件代理模块:邮件代理服务器的功能与实现

Nginx的邮件代理模块(Mail Proxy Module)允许Nginx作为邮件代理服务器,支持SMTP、POP3和IMAP协议。这使得Nginx可以作为一个高性能的邮件网关,用于过滤垃圾邮件、病毒扫描、负载均衡等任务。简单来说,Nginx在这里就像是一个邮递员,负责将邮件从发件人手中安全、快速地送到收件人手中。通过上述的解析,我们可以看到Nginx在邮件代理模块中的设计和实现。从配置解析、连接处理,到协议处理、SSL/TLS加密和日志记录,每一步都至关重要。

java专栏 1312

Swift:使用CFStringTransform实现汉字转拼音

其中string参数是要转换的字符串,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为nil,代表全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。我只是根据函数名做了个简单推测,并没有全部尝试(毕竟少用)如果有错可以在评论里指出,我也会感激你。函数的返回值类型为Boolean,不是Bool类型,所以如果转换成功就返回1,否则返回0,而不是true或者false。

u013938578的博客 735

GJB 5000B二级-II实施基础

本文主要描述GJB 5000B二级II实施基础与GJB 5000A的变化情况,以及过程域各条款的实施要点

Abel的博客 2581

ios开发 之 中文转拼音

在项目中显示通讯录往往需要把中文名字转换为拼音来进行排序,为此我封装了一个类,将中文转为拼音分享给大家。 思路主要为: 1、使用[CFStringTransform]的[kCFStringTransformMandarinLatin]可以将中文转为带音调的拼音 2、使用[CFStringTransform]的[kCFStringTransformStripDiacritics]可以去

曾治铭的博客 1554

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ios开发系列之中文转拼音,去声调,首字母转大写

1) 声明一个为汉字的不可变字符串NSString * str = @"这是一个汉字";2) 将字符串转成c语言中的不可变字符串 CFStringRef strRef = (CFStringRef)str;3) 将上述c中的不可变字符串转成c中可变的字符串 CFMutableStringRef mutableStrRef = CFStringCreateMutableCopy(NULL,

鬼谷传人的博客 2450

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

iOS 中文转拼音 多音字处理

//*string是要转换的字符串*/ - (NSString *)transformMandarinToLatin:(NSString *)string {     /*复制出一个可变的对象*/     NSMutableString *preString = [string mutableCopy];     /*转换成成带音 调的拼音*/     CFStringTransfor

暄泄了殇的博客 6083

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

iOS/macOS/iPadOS/tvOS 开发:中文转拼音,中文转带声调拼音,中文提取首字母

Swift 中文转拼音(带声调) 比如:中国 -> zhōng guó let base = "中国" let mutableString = NSMutableString(string: base) CFStringTransform(mutableString, nil, kCFStringTransformToLatin, false) print(mutableString) // zhōng guó 中文转拼音(无声调) 比如:中国 -> zhong guo let base =

我只是一个攻城狮 777

iOS开发-中文转拼音

使用CFStringTransform将汉字转换为拼音 之前做通讯录相关的一些App时,有一个比较常用的算法是将汉字转换成拼音。当时采用的做法是:将各个拼音段的首个汉字(按Unicode排序)做成两个 数组,一个数组存拼音,另一个数组存拼音对应首个汉字的Unicode。如果要获取某个汉字的拼音,可以折半查找法找的对应拼音。最近无意间发现CFStringTransform这篇文章后,发现系统本身已...

weixin_30515513的博客 124

ios中文数组排序

ios默认使用utf-8格式编码,中文在ios中的默认排序是有问题的。 本工具提供了中文数组排序,汉字转拼音

zink_lin的专栏 680

iOS/Mac OS X 汉字转拼音

作者:ani_di  版权所有,转载务必保留此链接 http://blog.youkuaiyun.com/ani_di iOS/Mac OS X 汉字转拼音 网络流行的汉字转拼音方案是带一个拼音码表,速度快。其实Core Foundation也提供了一种方案,而且还带声调! NSMutableString *ms = [[NSMutableString al

ani_di的专栏 7112

【亲测免费】 PinYin4Objc:Objective-C中的高效拼音库

在iOS和Mac OS X开发中,如果你需要处理汉字转拼音的需求, 是一个值得考虑的开源项目。这是一个专门为Objective-C编写的小巧且高效的拼音库,它能够帮助开发者轻松地获取汉字的全拼或首字母。 ## 技术分析 PinYin4Objc的设计基于C++的Pinyin4cpp库,但在Objective-C环境中进行了优化。其核心功能是通过哈希映射和预编译的字典文件实现快速的汉字到拼音转换。...

gitblog_00018的博客 714

按中文排序

IOS数组按中文关键字以字母序排序 http://blog.youkuaiyun.com/xunyn/article/details/7882087 中文首字母 排序 http://blog.youkuaiyun.com/kmyhy/article/details/7419208 汉字转化为拼音,支持多音字 http://blog.youkuaiyun.com/firehood_/article/de...

dazhi121812的博客 170

iOS中的小知识

1、文件大小差不多是 1000个pb

听榆大叔的专栏 948

华山论剑之iOS中文转化为拼音的正确姿势

问题缘由:在程序开发当中,我们可能遇到需要将中文转化为拼音的情况,其实主要是做类似于通讯录功能的时候会出现这种情况,iOS在CoreFoundation中提供了CFStringTransform函数,我们可以直接调用其中的函数: CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse); 代码说明,方法中使用的字符串为可变字符串; 当我们第一次调用上面的函数的时

得不到的永远是骚栋. 288
上一篇: UImageView翻转效果
下一篇: 绘制阴影 优化 + UIImage 性能优化
kingcodexl
博客等级 码龄12年 18粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值