在oc 之中的字符串为汉字的时候,我们常常要进行字符串比较,尤其是类似通讯录的项目,但是汉字不能比较,所以就要将汉字转化成为拼音后再进行比较,具体过程如下:
1.字符串转成带声调的拼音
//可变字符串 必须是可变字符串.
NSMutableString *mutableString = [NSMutableString stringWithString:@"中国"];
//转成带声调的拼音
CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);
NSLog(@"%@", mutableString);
输出结果为: zhōng guó
2.字符串转成不带声调的拼音
//转成没有声调的拼音
CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false);
NSLog(@"%@", mutableString);
输出结果为:zhong guo
注意:
1.这个方法必须先将不可变字符串转化为可变字符串才能将汉字转化成拼音.
2.此方法当遇到多音字的时候就不那么只能转化成为一种拼音
3.转化后的拼音之间会出现空格,把空格替换掉:
NSString *str = @"zhong guo";
NSString *newstr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
在XXLazyKit中可调用
- (NSString *)pinyinString; //直接将文字转换成拼音
+ (instancetype)pinyinStringWithSting:(NSString *)string;
网友评论