我正在开发一个允许用户输入日语字符的应用程序。我试图想出一种方法来确定用户的输入是否是日本假名(平假名,片假名或汉字)。
在应用程序中有些字段输入拉丁文本是不合适的,我需要一种方法将某些字段限制为仅限汉字,或仅使用片假名等。
该项目使用UTF-8编码。我不希望接受JIS或Shift-JIS输入。
想法?
答案 0 :(得分:6)
不确定答案是否正确,但维基百科上列出的katakana和hiragana的Unicode范围。 (我期望的也可以从unicode.org获得。)
根据输入检查这些范围应该以语言无关的方式验证Unicode的平假名或片假名。
对于汉字,我希望它会像我一样复杂一点 我希望中文和日文中使用的汉字都包含在同一范围内,但话说回来,我可能错了。 (我不能指望将简体中文和繁体中文包含在同一范围内......)
答案 1 :(得分:6)
听起来你基本上只需检查每个Unicode字符是否在特定范围内。 Unicode code charts应该是一个很好的起点。
如果你正在使用.NET,我的MiscUtil库有一些Unicode范围支持 - 它是原始的,但它应该可以完成这项工作。我现在没有动手来源,但如果有帮助,我会稍后用一个例子来更新这篇文章。
答案 2 :(得分:2)
正则表达式非常棒,因为你将问题加倍。我在PHP中做到了,我选择了更强大的自动生成问题
- 编辑 -
$pattern = '/[^\wぁ-ゔァ-ヺー\x{4E00}-\x{9FAF}_\-]+/u';
我找到了这个here,但它并不好......我会继续寻找
- edit-- 我查看了我的便携式硬盘....我以为我保留了最后一家公司的特定片段...抱歉。