合并或构建韩文字母

3 string unicode go

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

例如,如果我有

  ????????????
Run Code Online (Sandbox Code Playgroud)

这将是

  ?????
Run Code Online (Sandbox Code Playgroud)

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

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

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)
}
Run Code Online (Sandbox Code Playgroud)

nem*_*emo 6

你想要的是Unicode规范化来组成hangul jamo.Go支持此功能,但尚未在标准库中支持.请参阅此相关问题.

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

go get -u golang.org/x/text/unicode/norm
Run Code Online (Sandbox Code Playgroud)

你可能想要使用NFC来做一个

  • 规范分解,
  • 然后是Canonical Composition(这是你想要的)

NFD(分解)的例子:

// ? -> ???
fmt.Println( string( norm.NFD.AppendString(nil, "?") ) )
Run Code Online (Sandbox Code Playgroud)

NFC(组合)示例:

// ??? -> ?
fmt.Println( string( norm.NFC.AppendString(nil, "???") ) )
Run Code Online (Sandbox Code Playgroud)