在Objective-C中组合韩文字符

时间:2014-05-30 22:54:58

标签: objective-c nsstring

我一直在摸不着头脑。

我想将两个韩文字符合并为一个。

ㅁ + ㅏ = 마

我如何使用NSString执行此操作?


修改

zaph的解决方案适用于两个角色。但我很难理解如何结合2个以上。

ㅁ + ㅏ + ㄴ = 만

但是

NSString *s = @"ㅁㅏㄴ";
NSString *t = [s precomposedStringWithCompatibilityMapping];
NSLog(@"%@", t);

打印出来

마ㄴ

编辑2:

我环顾四周,似乎更多涉及。喜欢'만'由3部分组成。最初的jamo,medial jamo和最后的jamo。这些需要结合起来映射到Hangul音节中的代码点,使用下面的等式。

((initial * 588) + (medial * 28) + final) + 44032

blog post有一个非常好的解释。

3 个答案:

答案 0 :(得分:4)

使用' - (NSString *)precomposedStringWithCompatibilityMapping'。

NSString *tc = @"ㅁㅏ";
NSLog(@"tc: '%@'", tc);
NSString *cc = [tc precomposedStringWithCompatibilityMapping];
NSLog(@"cc: '%@'", cc);

NSLog输出:

  

tc:'ㅁㅏ'
  cc:'마'

参见Apple的技术Q& A QA1235:Converting to Precomposed Unicode

答案 1 :(得分:2)

他们实际上是不同的Unicode字符。 ㅁ(\ u3141)是" Hangul兼容性问题的一部分"阻止,并且这些角色应该自己出现(例如,当你想要说明个别的jamo时)。你想要的实际角色是\ u1106。例如,这里是\ u1106,后跟\ u1161,从Unicode表中单独复制和粘贴:마。如你所见,那些构成你想要的角色。

答案 2 :(得分:-4)

很简单:

NSString *first = @"ㅁ";
NSString *second = @"ㅏ";

NSString *combinedStr = [first stringByAppendingString:second];

NSLog(@"%@", combinedStr); // ㅁㅏ