NSString - Unicode to ASCII equivalent

后端 未结 5 1046
盖世英雄少女心
盖世英雄少女心 2020-12-05 10:45

I need to convert NSString in unicode to NSString in ASCII changing all local characters: Ą to A, Ś to S, Ó to O, ü to u, And so on...

What is the simplest way to

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-05 11:29

    Ken answer will replace "æ" with "ae" and "ß" with "s", but won't replace ligatures œ, ij, ff, fi, fl, ffi, ffl, ſt, st, ...

    An improved solution is to first insert additional lines of mapping to handle everything fine:

    string = [string stringByReplacingOccurrencesOfString:@"Œ" withString:@"OE"];
    string = [string stringByReplacingOccurrencesOfString:@"œ" withString:@"oe"];
    string = [string stringByReplacingOccurrencesOfString:@"Đ" withString:@"D"];
    string = [string stringByReplacingOccurrencesOfString:@"đ" withString:@"d"];
    string = [string precomposedStringWithCompatibilityMapping];
    
    NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *newString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    

提交回复
热议问题