合并或构建韩文字母

时间:2013-11-06 14:19:49

标签: string unicode go

无论如何,我可以将这个韩语辅音和元音组合成一个完整的角色。

例如,如果我有

  ㄱㅏㅁㅅㅏㅎㅏㅂㄴㅣㄷㅏ

这将是

  감사합니다

有没有办法做到这一点? 我只能想到强调每一个必须计算很多案例的案例。

以下是我的尝试。不是最佳的,需要花费太多时间。

if strings.Contains(input_str, "ㅏㄴㅈ") {
    input_str = strings.Replace(input_str, "ㅇㅏㄴㅈ", "앉", -1)
}

if strings.Contains(input_str, "ㅏㄹㅂ") {
    input_str = strings.Replace(input_str, "ㅂㅏㄹㅂ", "밟", -1)
}

if strings.Contains(input_str, "ㅏㅂㅅ") {
    input_str = strings.Replace(input_str, "ㄱㅏㅂㅅ", "값", -1)
}

2 个答案:

答案 0 :(得分:6)

你想要的是用于组成hangul jamo的Unicode规范化。 Go支持此功能,但尚未在标准库中支持。请参阅this related issue

要导入外部go.text/unicode/norm包,请使用:

go get -u golang.org/x/text/unicode/norm

您可能想要使用NFC来执行

  • Canonical Decomposition,
  • 其次是Canonical Composition(这就是你想要的)

NFD(分解)的例子:

// 앉 -> 앉
fmt.Println( string( norm.NFD.AppendString(nil, "앉") ) )

NFC(组合物)的实例:

// 앉 -> 앉
fmt.Println( string( norm.NFC.AppendString(nil, "앉") ) )

答案 1 :(得分:1)