仕様
- 英語は全角でも半角でも半角に
- カタカナもひらがなに
- 記号などはブランク
ソース
objective-c
- (NSString *)getJapaneseLine:(NSString *)aString
{
if (aString.length == 0) {
return @"";
}
NSString *uppercaseString = [aString uppercaseString];
NSMutableString *halfString = [uppercaseString mutableCopy];
CFStringTransform((CFMutableStringRef)halfString, NULL, kCFStringTransformFullwidthHalfwidth, FALSE);
NSMutableString *kanaString = [halfString mutableCopy];
CFStringTransform((CFMutableStringRef)kanaString, NULL, kCFStringTransformHiraganaKatakana, TRUE);
unichar uc = [kanaString characterAtIndex:0];
if (uc >= 0x3041 && uc <= 0x304A) {
return @"あ";
} else if (uc >= 0x304B && uc <= 0x3054) {
return @"か";
} else if (uc >= 0x3055 && uc <= 0x305E) {
return @"さ";
} else if (uc >= 0x305F && uc <= 0x3069) {
return @"た";
} else if (uc >= 0x306A && uc <= 0x306E) {
return @"な";
} else if (uc >= 0x306F && uc <= 0x307D) {
return @"は";
} else if (uc >= 0x307E && uc <= 0x3082) {
return @"ま";
} else if (uc >= 0x3083 && uc <= 0x3088) {
return @"や";
} else if (uc >= 0x3089 && uc <= 0x308D) {
return @"ら";
} else if (uc >= 0x308F && uc <= 0x3093) {
return @"わ";
} else if (uc >= 0x0041 && uc <= 0x005A) {
// A-Z
return [NSString stringWithFormat:@"%C", uc];
} else {
// その他
return @"";
}
}
swift
func getJapaneseLine(aString: String) -> String {
if line.isEmpty {
return "";
}
var keyString = String(aString[aString.startIndex]).uppercaseString
var halfString = NSMutableString(string: keyString) as CFMutableString
CFStringTransform(halfString, nil, kCFStringTransformFullwidthHalfwidth, false)
var kanaString = NSMutableString(string: halfString) as CFMutableString
CFStringTransform(kanaString, nil, kCFStringTransformHiraganaKatakana, true)
keyString = kanaString as String
let c = first(keyString.unicodeScalars)!.value
if c >= 0x3041 && c <= 0x304A {
return "あ"
} else if c >= 0x304B && c <= 0x3054 {
return "か"
} else if c >= 0x3055 && c <= 0x305E {
return "さ"
} else if c >= 0x305F && c <= 0x3069 {
return "た"
} else if c >= 0x306A && c <= 0x306E {
return "な"
} else if c >= 0x306F && c <= 0x307D {
return "は"
} else if c >= 0x307E && c <= 0x3082 {
return "ま"
} else if c >= 0x3083 && c <= 0x3088 {
return "や"
} else if c >= 0x3089 && c <= 0x308D {
return "ら"
} else if c >= 0x308F && c <= 0x3093 {
return "わ"
} else if c >= 0x0041 && c <= 0x005A {
// A-Z
return String(format: "%C", c)
} else {
// その他
return "";
}
}