汉字转拼音,ch开头被转换成z开头问题

    xiaoxiao2021-04-17  35

    很多时候有这样的需求

    细心的朋友会发现,我上面的字母里面没有C开头的,其实我的数据里面是有的,我的数据是:长城,但是调用系统的方法,给我转成了'Z'开头的,在'Z'的那一栏,我就疯了。

    后来发现,原来像"长"这种多音字都会转错,目前我找到的解决办法只能是:

    //*string是要转换的字符串*/ - (NSString *)transformMandarinToLatin:(NSString *)string { /*复制出一个可变的对象*/ NSMutableString *preString = [string mutableCopy]; /*转换成成带音 调的拼音*/ CFStringTransform((CFMutableStringRef)preString, NULL, kCFStringTransformMandarinLatin, NO); /*去掉音调*/ CFStringTransform((CFMutableStringRef)preString, NULL, kCFStringTransformStripDiacritics, NO); /*多音字处理*/ if ([[(NSString *)string substringToIndex:1] compare:@"长"] == NSOrderedSame) { [preString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chang"]; } if ([[(NSString *)string substringToIndex:1] compare:@"沈"] == NSOrderedSame) { [preString replaceCharactersInRange:NSMakeRange(0, 4) withString:@"shen"]; } if ([[(NSString *)string substringToIndex:1] compare:@"厦"] == NSOrderedSame) { [preString replaceCharactersInRange:NSMakeRange(0, 3) withString:@"xia"]; } if ([[(NSString *)string substringToIndex:1] compare:@"地"] == NSOrderedSame) { [preString replaceCharactersInRange:NSMakeRange(0, 3) withString:@"di"]; } if ([[(NSString *)string substringToIndex:1] compare:@"重"] == NSOrderedSame) { [preString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"]; } return preString; }

    转载请注明原文地址: https://ju.6miu.com/read-673462.html

    最新回复(0)