iOS-如何返回某个字符串的拼音助记码
我也是看了网上的一个示例代码后,在它的基础上进行的修改。因为项目上会用到,我相信很多人的项目上也会用到。所以实现后,也赶紧分享出来,希望后来人不需要花费时间了。
提示:这里用到了正则表达式,使用了一个第三方开源的组件: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-如何返回某个字符串的拼音助记码的更多相关文章
- 用友U8根据客户简称/供应商简称的拼音首字母生成助记码
用友U8+中,客户档案和供应商档案可以设置自动生成助记码,但软件只能自动根据客户全称/供应商全称生成助记码,而无法选择按简称生成助记码,这显然十分不方便,可以通过如下方式解决: 修改步骤 1.往数据库 ...
- js 根据所输内容生成助记码
js生成与中文字符串相对映的拼音首字母串 CreateTime--2017年7月14日16:35:31Author:Marydon 需要工具js文件letter.js,代码如下: /** 作者:梅 ...
- 金蝶KIS&K3助记码SQL数据库批量刷新
金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...
- 1.16. BIP39协议:使用助记词生成确定性钱包
以太坊系统学习教程: https://www.netkiller.cn/blockchain/bip39.html 1.16. BIP39协议:使用助记词生成确定性钱包 BIP:39 层:应用层 标题 ...
- ios 汉字字符串数组拼音排序
ios没有提供简单的汉字拼音排序方法,在网上看到了oc方法,这里写以下对应的swift方法 var stringCompareBlock: (String,String)->Bool = { ( ...
- asp.net 获取汉字字符串的拼音首字母,含多音字
需求:在很多时候数据查询的时候,我们希望输入某个人姓名的拼音首字母进行查询,例如“潘长江”,输入“pcj”,就能搜索潘长江相关信息. 实现: #region 获取汉字转换拼音 首字母 public s ...
- MySQL通过函数获取字符串汉字拼音首字母大写字符串
DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARC ...
- spring mvc返回json字符串的方式
spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json 优点:不需要自己再处理 步骤一:在spring- ...
- 【代码笔记】iOS-传身份证号码可返回生日字符串
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NS ...
随机推荐
- hadoop datanode usages方差算法
stdDev 标准差(方差) 阐述及应用 简单来说,标准差是一组数值自平均值分散开来的程度的一种测量观念.一个较大的标准差,代表大部分的数值和其平均值之间差异较大:一个较小的标准差,代表这些数值较接近 ...
- scrapy——4 —反爬措施—logging—重要参数—POST请求发送实战
scrapy——4 常用的反爬虫策略有哪些 怎样使用logging设置 Resquest/Response重要参数有哪些 Scrapy怎么发送POST请求 动态的设置User-Agent(随即切换Us ...
- 【Codeforces 1106D】Lunar New Year and a Wander
[链接] 我是链接,点我呀:) [题意] 让你遍历n个节点,访问过的节点不操作. 如果是没有访问过的点,那就把它加到序列的末尾. 问你形成的最小字典序的序列是多少. [题解] 显然每次找最小的标号 用 ...
- 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整 ...
- I NEED A OFFER! (hdu 1203 01背包)
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- DBI(i80)/DPI(RGB)/DSI【转】
本文转载自:http://blog.csdn.net/liuxd3000/article/details/17437317 (1)DBI接口 A,也就是通常所讲的MCU借口,俗称80 system接口 ...
- 深入理解Android开发中的CoordinatorLayout Behavior
在使用Android设计支持库(Android Design Support Library)时,很难避开CoordinatorLayout:设计库中有很多视图都需要CoordinatorLayout ...
- Android+Jquery Mobile学习系列(6)-个人信息设置
本节开始,进行代码的实战练习.我的这个App是管理保险客户信息的,数据采用Sqlite存储在本地手机上,第一次使用需要先登记自己的个人信息,这个功能非常简单,也无关紧要,我是拿这个练手,方便做后面复杂 ...
- 【POJ 3740】 Easy Finding
[题目链接] http://poj.org/problem?id=3740 [算法] Dancing Links算法解精确覆盖问题 详见这篇文章 : https://www.cnblogs.com/g ...
- leetcode二分查找相关
目录 33/81搜索旋转排序数组 34在排序数组中查找元素的第一个和最后一个位置 35搜索插入位置 74搜索二维矩阵 300最长上升子序列,354俄罗斯套娃信封问题 33/81搜索旋转排序数组 假设按 ...