一个转换算法 包括读取
/遍历
/转换
/写入
只做个人笔记, 可参考代码, 无法直接使用
NSArray<NSString*>* stateArray=[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"province" ofType:@"plist"]];
NSDictionary<NSString*,NSArray<NSString*>*>* cityDic=[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"]];
NSMutableDictionary * d = [NSMutableDictionary new];
for (NSString* state in stateArray) {
for (NSString* city in cityDic[state]) {
NSString* cityPhonetic = [NSString phonetic:city];
cityPhonetic = [cityPhonetic substringToIndex:1];
cityPhonetic = [cityPhonetic uppercaseString];
NSMutableArray * arr = d[cityPhonetic];
if (arr==nil) {
arr = [NSMutableArray new];
}
[arr addObject:city];
[d setValue:arr forKey:cityPhonetic];
}
}
//DJLog(@"%@",d);
self.cityDic = d;
self.stateArray = [self.cityDic.allKeys sortedArrayUsingSelector:@selector(compare:)];
//把数据保存到沙盒里的plist文件
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath1= [paths objectAtIndex:0];
NSLog(@"%@",plistPath1);
//得到完整的路径名
NSString *fileName = [plistPath1 stringByAppendingPathComponent:@"cityDic.plist"];
NSString *fileName2 = [plistPath1 stringByAppendingPathComponent:@"citykey.plist"];
NSFileManager *fm = [NSFileManager defaultManager];
if ([fm createFileAtPath:fileName contents:nil attributes:nil] ==YES) {
[self.cityDic writeToFile:fileName atomically:YES];
[self.stateArray writeToFile:fileName2 atomically:YES];
NSLog(@"文件写入完成");
}
//NSString的分类:
/**
* 汉字转拼音
*/
+(NSString *) phonetic:(NSString*)sourceString {
if ([sourceString isEqualToString:@""]) {
return sourceString;
}
// CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, (CFStringRef)city);
NSMutableString *source = [sourceString mutableCopy];
CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformMandarinLatin, NO);
CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformStripDiacritics, NO);
if ([[(NSString *)sourceString substringToIndex:1] compare:@"长"] ==NSOrderedSame)
{
[source replaceCharactersInRange:NSMakeRange(0, 5)withString:@"chang"];
}
if ([[(NSString *)sourceString substringToIndex:1] compare:@"沈"] ==NSOrderedSame)
{
[source replaceCharactersInRange:NSMakeRange(0, 4)withString:@"shen"];
}
if ([[(NSString *)sourceString substringToIndex:1] compare:@"厦"] ==NSOrderedSame)
{
[source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"xia"];
}
if ([[(NSString *)sourceString substringToIndex:1] compare:@"地"] ==NSOrderedSame)
{
[source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"di"];
}
if ([[(NSString *)sourceString substringToIndex:1] compare:@"重"] ==NSOrderedSame)
{
[source replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"];
}
return source;
}
评论已关闭