我期待得到밥和좋은,为最后两个输出。
表示输出,但不会“合并”以下任何一项。
这个包没有做任何事情。
有人能说出我在这段代码中做错了什么吗?我将不胜感激。
import "code.google.com/p/go.text/unicode/norm"
import "fmt"
func main() {
str := "ㅈㅗㅎㅇㅡㄴ"
fmt.Println( string( norm.NFD.AppendString(nil, "앉") ) )
fmt.Println( string( norm.NFC.AppendString(nil, "바ㅂ") ) )
fmt.Println( string( norm.NFC.AppendString(nil, str) ) )
}
包裹来自这里
go get -u code.google.com/p/go.text/unicode/norm http://godoc.org/code.google.com/p/go.text/unicode/norm
答案 0 :(得分:4)
是的,它有所帮助。如果您观察到第一次操作的输出:
fmt.Println( string( norm.NFD.AppendString(nil, "앉") ) )
您可以看到它已经成功分解了您的字符串,返回了三个代码点来代替您原来的앉
字符。第一个是ᄋ
:
U+110B (HANGUL CHOSEONG IEUNG)
虽然不明显,但这与ㅇ
变量中的str
字符不同:
U+3147 (HANGUL LETTER IEUNG)
如果你想把你从NFD得到的角色组成,你的确会最终得到。。
修改强>
str
变量中的字母使用Hangul Compatibility Jamo字符,这些字符仅用于向后兼容,但缺少语义属性。如果您希望它起作用,则应使用Hangul Jamo块。