我也是看了网上的一个示例代码后,在它的基础上进行的修改。因为项目上会用到,我相信很多人的项目上也会用到。所以实现后,也赶紧分享出来,希望后来人不需要花费时间了。

提示:这里用到了正则表达式,使用了一个第三方开源的组件:RegexKitLite (该组件如何使用网上教程很多)

#pragma mark - 获取拼音首字母(传入汉字字符串, 返回小写拼音首字母)

+(NSString *)pinYingFirstCharactorStr:(NSString *)aString

{

//转成了可变字符串

NSMutableString *str = [NSMutableString stringWithString:aString];

//先转换为带声调的拼音

CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);

//再转换为不带声调的拼音

CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);

//转化为小写拼音

NSString *pinYin = [str lowercaseString];

//根据指定的正则表达式将拼音字串转换成各个子字符串数组

NSString *regexString = @"\\s";  //使用的拆分间隔的正则符号是空格

NSArray* aArray=[pinYin componentsSeparatedByRegex:regexString];  //进行拆分

//遍历字符串数组,拼接首字母

NSString* strReturn=@"";

NSString* strProc = @"";

for (int i=0; i<aArray.count; i++) {

//针对子串可能有数字进一步处理

NSString* strTmp=[CRGOtherHelper firstReplaceInNumberStr:aArray[i]];

if (strTmp!=nil) {

strReturn=[strProc stringByAppendingString:strTmp];

strProc=strReturn;

}

else

{

strReturn=aArray[i];

}

}

//获取并返回首字母

return strReturn;

}

//对传入的字符串进行按数字间隔拆分到一个新的子数组中,对子数组中的非空成员取首字母得到一个临时字符。

//然后用这个临时字符去替换原有的数组成员中的字符串的对应部分(查找方式是比对先前拆分的成员)

+(NSString*)firstReplaceInNumberStr:(NSString*)waitProcStr

{

NSString* strResult=nil;

NSString* strWait=[[waitProcStr copy] autorelease];

//找字符串

NSString *regexString=@"[0-9]";

//进一步拆分成子串数组

NSArray* strArray=[waitProcStr componentsSeparatedByRegex:regexString];  //进行拆分

NSArray* strCopy=nil;

if (strArray.count!=0) {

strCopy=[strArray copy];

}

for (int j=0; j<strArray.count; j++) {

if (![(NSString*)strArray[j] isEqualToString:@""])

{

//取首字母

NSString* fistChar=[strArray[j] substringToIndex:1];

//部分替换

strResult=[strWait stringByReplacingOccurrencesOfRegex:strCopy[j] withString:fistChar];

strWait=strResult;

}

}

return strResult;

}

希望大家能用得上!(测试中发现全是数字的字符串会出错,有修改了下,已更新)

iOS-如何返回某个字符串的拼音助记码的更多相关文章

  1. 用友U8根据客户简称/供应商简称的拼音首字母生成助记码

    用友U8+中,客户档案和供应商档案可以设置自动生成助记码,但软件只能自动根据客户全称/供应商全称生成助记码,而无法选择按简称生成助记码,这显然十分不方便,可以通过如下方式解决: 修改步骤 1.往数据库 ...

  2. js 根据所输内容生成助记码

      js生成与中文字符串相对映的拼音首字母串 CreateTime--2017年7月14日16:35:31Author:Marydon 需要工具js文件letter.js,代码如下: /** 作者:梅 ...

  3. 金蝶KIS&K3助记码SQL数据库批量刷新

    金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...

  4. 1.16. BIP39协议:使用助记词生成确定性钱包

    以太坊系统学习教程: https://www.netkiller.cn/blockchain/bip39.html 1.16. BIP39协议:使用助记词生成确定性钱包 BIP:39 层:应用层 标题 ...

  5. ios 汉字字符串数组拼音排序

    ios没有提供简单的汉字拼音排序方法,在网上看到了oc方法,这里写以下对应的swift方法 var stringCompareBlock: (String,String)->Bool = { ( ...

  6. asp.net 获取汉字字符串的拼音首字母,含多音字

    需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如“潘长江”,输入“pcj”,就能搜索潘长江相关信息. 实现: #region 获取汉字转换拼音 首字母 public s ...

  7. MySQL通过函数获取字符串汉字拼音首字母大写字符串

    DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARC ...

  8. spring mvc返回json字符串的方式

    spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json            优点:不需要自己再处理 步骤一:在spring- ...

  9. 【代码笔记】iOS-传身份证号码可返回生日字符串

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NS ...

随机推荐

  1. SecureCRT 的使用技巧

    SecureCRT 支持 SSH1,SSH2,Telnet,RLogin,Serial,和 TAPI 协议, 一般用来登录Linux服务器进行跨系统操作,也可代替 超级终端,进行串口 调试. 1.串口 ...

  2. readl()和writel()

    writel() 往内存映射的 I/O 空间上写数据,wirtel() I/O 上写入 32 位数据 (4字节). 原型: 引用 #include <asm/io.h> void writ ...

  3. WeX5 IDE 手机移动开发+JAVA +大数据

    http://www.wex5.com/wex5/?qb360=wex501=3534 前端技术 HTML,CSS,JavaScript,EasyUI,Jquery,HTML5,CSS3,Jquery ...

  4. HDU 5200 脑洞题 离线

    线段树,TLE,各种.唉....我真是笨死了.... 我用的线段树是记录左右区间最长连续棵数的...反正TLE #include <iostream> #include <cstdi ...

  5. Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)

    1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  6. HDU1024_Max Sum Plus Plus【滚动数组】

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  7. ASP.NET MVC 认证模块报错:“System.Configuration.Provider.ProviderException: 未启用角色管理器功能“

    新建MVC4项目的时候 选 Internet 应用程序的话,出来的示例项目就自带了默认的登录认证等功能.如果选空或者基本,就没有. 如果没有,现在又想加进去,怎么办呢? 抄啊.将示例项目的代码原原本本 ...

  8. Spring+Mybatis之注册功能demo

    这次先注册功能的是基于登录之后,所以很多配置,实体类等就不再赘述了. 首先也不是直接在地址栏输入一个网页就可以到注册页面的.而是需要通过后台发送一个请求从而跳转到注册页面 先写注册页面,body部分 ...

  9. oc28--Property增强

    // // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject /* { @public int ...

  10. DCloud-MUI:事件管理

    ylbtech-DCloud-MUI:事件管理 极简的JS函数 1.返回顶部 1.事件绑定 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实 ...