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

提示:这里用到了正则表达式,使用了一个第三方开源的组件: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. GlobalSign 增强型(EV) SSL 证书

    GlobalSign 增强型(EV) SSL 证书,属于最高验证级别的EV SSL,验证域名所有权,进行严格的企业真实身份验证,证书标识企业组织机构名称,强化信任度,浏览器地址栏变绿色.提供40位/5 ...

  2. 【转】How Many Boyfriends

    如果一个女人遇到不同星座男的概率相同 那么这个女人期望遇到多少个男人就能集齐12个不同星座的男人 我们简化一下问题. 如果只有一个星座,那么期望值为1 如果只有两个星座,那遇到第一个男人后 期望再遇到 ...

  3. 暑假集训D17总结

    考试 玄学的一次考试= = T1乱搞 只会乱搞出前二十分  然后真的拿了二十分 T2模拟 自己造数据 没有一个是在十分钟内跳出来的 然后竟然A了 T3暴力 觉得如果老爷机心情不好就会被卡到20  然后 ...

  4. java.awt.headless 参数说明

    在使用Java处理图形应用时,经常有人推荐设置 -Djava.awt.headless=true,具体含义和效果查了一下,记录在这里分享 Headless模式是系统的一种配置模式.在该模式下,系统缺少 ...

  5. [USACO16OPEN]关闭农场Closing the Farm(洛谷 3144)

    题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...

  6. POJ 3748:位操作

    位操作 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8964   Accepted: 3581 Description 如 ...

  7. android.os.TransactionTooLargeException

    android.os.TransactionTooLargeException 今天开发过程共遇到问题,后台要反回一些表格,不是单纯的数据.就是有一些html标签的东西.错误的思路: 我得到数据后通过 ...

  8. HTML_项目符号使用图片

    本文出自:http://blog.csdn.net/svitter 创建一个HTML页面. 其内容为一个无序列表. 列表中至少包括了5本畅销书,每本书之前的项目符号必须採用概述封面的缩略图. 这些信息 ...

  9. OC3大回调模式使用总结(三)block回调

    OC 3大回调模式使用总结(三)block回调 block 又称 代码块,闭包等 是一个匿名的函数,它能够当做一个对象来使用,仅仅只是这个对象非常特殊,是一段代码,他能够保存你写的一段预备性质代码,待 ...

  10. 用sp_executesql执行动态SQL语句及获得返回值

    过去我执行拼凑出来的动态SQL语句,都直接使用EXEC @sql 的方式.有好几次,都看到有资料说,应该尽量使用 sp_executesql. 究其原因,是因为仅仅参数不同的情况下,sp_execut ...