我正在开发一个允许用户输入日语字符的应用程序.我试图想出一种方法来确定用户的输入是否是日本假名(平假名,片假名或汉字).
应用程序中的某些字段输入拉丁文本是不合适的,我需要一种方法将某些字段限制为仅限汉字,或仅限片假名等.
该项目使用UTF-8编码.我不希望接受JIS或Shift-JIS输入.
想法?
不确定一个完美的答案,但维基百科上列出的片假名和平假名有一个Unicode范围.(我也期望从unicode.org获得.)
平假名:Unicode:3040-309F
片假名:Unicode:30A0-30FF
根据输入检查这些范围应该以语言无关的方式验证Unicode的平假名或片假名.
对于汉字,我希望它有点复杂,因为我希望中文和日文中使用的汉字都包含在同一范围内,但话说回来,我可能错了.(我不能指望将简体中文和繁体中文包含在同一范围内......)
听起来你基本上只需要检查每个Unicode字符是否在特定范围内.该Unicode代码图表应该是一个很好的起点.
如果您正在使用.NET,我的MiscUtil库有一些Unicode范围支持 - 它是原始的,但它应该完成这项工作.我现在没有动手来源,但如果有帮助的话,稍后会用一个例子来更新这篇文章.