【发布时间】:2013-11-19 12:09:49
【问题描述】:
你认为只有 Regex 才有可能吗?
这是我在 Go Playground 上的尝试
用一些脏代码就成功了
http://play.golang.org/p/YysZCB3vlu
我希望将扩展的韩语字符转换为完整的字母。 例如,“ㅈㅗㅈㅗㅎㅇㅡㅡㄴㄱㅂㅅㅇㅣㅆㅏㅇㅛㅇㅏㅊㅣㅁㅇㄴㄴㅕㅇㅎㅎㅏㅛㅇㅜㅔㅜㅔ값ㅛㅜㅔㅜㅔto이싸요값싸요싸요싸요싸요안녕안녕하세요하세요하세요하세요하세요하세요하세요하세요하세요안녕하세요하세요웬안녕웬웬안녕안녕안녕안녕싸요안녕안녕안녕
对于不能正确呈现韩文字符的浏览器:
좋 은 값 이 싸 요 아 침 안 녕 하 세 요 웬
简单的部分是韩文字母只能以一个辅音+一或两个元音开头。这可以通过 (.([ㅏ-ㅣ])+) 捕获。
具有挑战性的部分是元音后面的零个或一个或最多两个可选辅音。难的另一个原因是,在最多两个可选辅音之后,我们还有另一个不属于前一个字母的辅音,而这个辅音意味着另一个新字母的开始。
如下:
ㄱㅏㅂㅅㅇㅣ
= ㄱㅏㅂㅅ + ㅇㅣ
= 값 + 이
= 값이
可以使用 if 条件和基本正则表达式捕获所有模式。但如果我有更短的版本就好了。
我的终极目标是转换“ㅈㅗㅎㅇㅡㄴㄱㅏㅅㅇㅣㅆㅏㅛㅏㅊㅣㅁㅇㅏㄴㅕㅎㅏㅅㅔㅇㅜㅔㄴㅔㄴㅅ싸요값ㅔㄴ값싸요싸요싸요웬하세요웬웬
对于不能正确呈现韩文字符的浏览器:
좋 은 값 이 싸 요 아 침 안 녕 하 세 요 웬
【问题讨论】:
-
也许unicode.org/versions/Unicode6.0.0/ch03.pdf 的§3.12 会有所帮助。
标签: regex unicode character-encoding go