在 Objective-C 中组合韩语字符
Posted
技术标签:
【中文标题】在 Objective-C 中组合韩语字符【英文标题】:Combining Korean characters in Objective-C 【发布时间】:2014-05-30 22:54:58 【问题描述】:我一直在为此挠头。
我想把两个韩文字符组合成一个。
ㅁ + ㅏ = 마
我将如何使用 NSString 进行此操作?
编辑:
zaph 的解决方案适用于两个字符。但我对如何组合超过 2 个感到困惑。
ㅁ + ㅏ + ㄴ = 만
但是
NSString *s = @"ㅁㅏㄴ";
NSString *t = [s precomposedStringWithCompatibilityMapping];
NSLog(@"%@", t);
打印出来
마ㄴ
编辑 2:
我环顾四周,似乎更多地参与其中。像“만”这样的字符由 3 个部分组成。最初的jamo,中间的jamo和最后的jamo。这些需要结合起来映射到韩文音节中的代码点,使用下面的等式。
((initial * 588) + (medial * 28) + final) + 44032
这个blog post有很好的解释。
【问题讨论】:
【参考方案1】:使用'- (NSString *)precomposedStringWithCompatibilityMapping'。
NSString *tc = @"ㅁㅏ";
NSLog(@"tc: '%@'", tc);
NSString *cc = [tc precomposedStringWithCompatibilityMapping];
NSLog(@"cc: '%@'", cc);
NSLog 输出:
tc: 'ㅁㅏ' 抄送:'마'
查看 Apple 的技术问答 QA1235:Converting to Precomposed Unicode
【讨论】:
谢谢扎夫。您的解决方案有效!但我对如何组合超过 2 个字符感到困惑(我的问题已被编辑)。有没有更通用的解决方案?【参考方案2】:它们实际上是不同的 Unicode 字符。 ㅁ (\u3141) 是“Hangul compatible jamo”块的一部分,这些字符应该单独出现(例如,当你想说明一个单独的 jamo 时)。你想要的实际字符是\u1106。例如,这里是 \u1106 后跟 \u1161,分别从 Unicode 表复制和粘贴:마。如您所见,它们组成了您想要的角色。
【讨论】:
【参考方案3】:很简单:
NSString *first = @"ㅁ";
NSString *second = @"ㅏ";
NSString *combinedStr = [first stringByAppendingString:second];
NSLog(@"%@", combinedStr); // ㅁㅏ
【讨论】:
这给出了“ㅁㅏ”,而不是“마”。问题是关于将两个字符组合成一个。以上是关于在 Objective-C 中组合韩语字符的主要内容,如果未能解决你的问题,请参考以下文章