4

この韓国語の子音と母音を組み合わせて完全な文字にすることはできますか。

たとえば、私が持っている場合

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

それはそのようになります

  감사합니다

これを行う方法はありますか?多くのケースを数えなければならないすべてのケースをブルートフォースすることしか考えられません。

以下は私の試みです。最適ではなく、時間がかかりすぎます。

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)
}
4

2 に答える 2

7

あなたが望むのは、ハングル字母を作成するための Unicode 正規化です。Go はこれをサポートしていますが、(まだ) 標準ライブラリではサポートしていません。この関連する問題を参照してください。

go.text/unicode/norm外部パッケージをインポートするには、次を使用します。

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

おそらく、 NFCを使用したいと思うでしょう。

  • 正準分解、
  • 続いて正規構成(これが必要です)

NFD (分解) の例:

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

NFC の例 (構成):

// 앉 -> 앉
fmt.Println( string( norm.NFC.AppendString(nil, "앉") ) )
于 2013-11-06T15:58:24.103 に答える
2

最近、誰かが韓国語で Unicode に関する記事を書きました: http://www.programminginkorean.com/programming/hangul-in-unicode/composing-syllables-in-unicode/

于 2013-11-11T21:44:26.257 に答える