Skip to content

Instantly share code, notes, and snippets.

@corocorococoro
Last active December 20, 2015 11:09
Show Gist options
  • Save corocorococoro/6120635 to your computer and use it in GitHub Desktop.
Save corocorococoro/6120635 to your computer and use it in GitHub Desktop.
半角カナを全角カナにする。 NSString* strHankaku = @"アイウエオ"; NSString* strZenkaku = str.convertToZenkakukana; // strZenkaku → アイウエオ
@interface NSString(NSStringAddition)
- (NSString *)convertToZenkakukana;
@end
@implementation NSString(NSStringAddition)
- (NSString *)convertToZenkakukana
{
NSMutableString *target =self.mutableCopy;
for(int p = 0; p < [target length]; p++)
{
NSRange range = NSMakeRange(p, 1);
NSString *moji = [target substringWithRange:range];
@autoreleasepool
{
NSString* (^getZenkakuKanaWithHanaku)(NSString*) = ^(NSString* str) {
if([str isEqualToString:@"ヲ"]) return @"ヲ";
if([str isEqualToString:@"ァ"]) return @"ァ";
if([str isEqualToString:@"ィ"]) return @"ィ";
if([str isEqualToString:@"ゥ"]) return @"ゥ";
if([str isEqualToString:@"ェ"]) return @"ェ";
if([str isEqualToString:@"ォ"]) return @"ォ";
if([str isEqualToString:@"ャ"]) return @"ャ";
if([str isEqualToString:@"ュ"]) return @"ュ";
if([str isEqualToString:@"ョ"]) return @"ョ";
if([str isEqualToString:@"ッ"]) return @"ッ";
if([str isEqualToString:@"ー"]) return @"ー";
if([str isEqualToString:@"ア"]) return @"ア";
if([str isEqualToString:@"イ"]) return @"イ";
if([str isEqualToString:@"ウ"]) return @"ウ";
if([str isEqualToString:@"エ"]) return @"エ";
if([str isEqualToString:@"オ"]) return @"オ";
if([str isEqualToString:@"カ"]) return @"カ";
if([str isEqualToString:@"キ"]) return @"キ";
if([str isEqualToString:@"ク"]) return @"ク";
if([str isEqualToString:@"ケ"]) return @"ケ";
if([str isEqualToString:@"コ"]) return @"コ";
if([str isEqualToString:@"サ"]) return @"サ";
if([str isEqualToString:@"シ"]) return @"シ";
if([str isEqualToString:@"ス"]) return @"ス";
if([str isEqualToString:@"セ"]) return @"セ";
if([str isEqualToString:@"ソ"]) return @"ソ";
if([str isEqualToString:@"タ"]) return @"タ";
if([str isEqualToString:@"チ"]) return @"チ";
if([str isEqualToString:@"ツ"]) return @"ツ";
if([str isEqualToString:@"テ"]) return @"テ";
if([str isEqualToString:@"ト"]) return @"ト";
if([str isEqualToString:@"ナ"]) return @"ナ";
if([str isEqualToString:@"ニ"]) return @"ニ";
if([str isEqualToString:@"ヌ"]) return @"ヌ";
if([str isEqualToString:@"ネ"]) return @"ネ";
if([str isEqualToString:@"ノ"]) return @"ノ";
if([str isEqualToString:@"ハ"]) return @"ハ";
if([str isEqualToString:@"ヒ"]) return @"ヒ";
if([str isEqualToString:@"フ"]) return @"フ";
if([str isEqualToString:@"ヘ"]) return @"ヘ";
if([str isEqualToString:@"ホ"]) return @"ホ";
if([str isEqualToString:@"マ"]) return @"マ";
if([str isEqualToString:@"ミ"]) return @"ミ";
if([str isEqualToString:@"ム"]) return @"ム";
if([str isEqualToString:@"メ"]) return @"メ";
if([str isEqualToString:@"モ"]) return @"モ";
if([str isEqualToString:@"ヤ"]) return @"ヤ";
if([str isEqualToString:@"ユ"]) return @"ユ";
if([str isEqualToString:@"ヨ"]) return @"ヨ";
if([str isEqualToString:@"ラ"]) return @"ラ";
if([str isEqualToString:@"リ"]) return @"リ";
if([str isEqualToString:@"ル"]) return @"ル";
if([str isEqualToString:@"レ"]) return @"レ";
if([str isEqualToString:@"ロ"]) return @"ロ";
if([str isEqualToString:@"ワ"]) return @"ワ";
if([str isEqualToString:@"ン"]) return @"ン";
if([str isEqualToString:@"ガ"]) return @"ガ";
if([str isEqualToString:@"ギ"]) return @"ギ";
if([str isEqualToString:@"グ"]) return @"グ";
if([str isEqualToString:@"ゲ"]) return @"ゲ";
if([str isEqualToString:@"ゴ"]) return @"ゴ";
if([str isEqualToString:@"ザ"]) return @"ザ";
if([str isEqualToString:@"ジ"]) return @"ジ";
if([str isEqualToString:@"ズ"]) return @"ズ";
if([str isEqualToString:@"ゼ"]) return @"ゼ";
if([str isEqualToString:@"ゾ"]) return @"ゾ";
if([str isEqualToString:@"ダ"]) return @"ダ";
if([str isEqualToString:@"ヂ"]) return @"ヂ";
if([str isEqualToString:@"ヅ"]) return @"ヅ";
if([str isEqualToString:@"デ"]) return @"デ";
if([str isEqualToString:@"ド"]) return @"ド";
if([str isEqualToString:@"バ"]) return @"バ";
if([str isEqualToString:@"ビ"]) return @"ビ";
if([str isEqualToString:@"ブ"]) return @"ブ";
if([str isEqualToString:@"ベ"]) return @"ベ";
if([str isEqualToString:@"ボ"]) return @"ボ";
if([str isEqualToString:@"パ"]) return @"パ";
if([str isEqualToString:@"ピ"]) return @"ピ";
if([str isEqualToString:@"プ"]) return @"プ";
if([str isEqualToString:@"ペ"]) return @"ペ";
if([str isEqualToString:@"ポ"]) return @"ポ";
return str;
};
[target replaceCharactersInRange:NSMakeRange(p, 1) withString:getZenkakuKanaWithHanaku(moji)];
}
}
return [target decomposedStringWithCompatibilityMapping];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment