2008-12-23 72 views
4

我上的应用程序,允许用户输入日语文字工作。我试图想出一个方法来确定用户的输入是否是日文假名(平假名,片假名,或汉字)。确认假名输入

有在进入拉丁文字是不恰当的应用有一定的领域,我需要一种方法来限制某些领域只有日文汉字,或片假名,只有等

该项目采用UTF-8编码。我不希望接受JIS或Shift-JIS输入。

想法?

回答

5

这听起来像你基本上只是需要检查每一个Unicode字符是否是一个特定的范围内。 Unicode code charts应该是一个很好的起点。

如果您使用.NET,我MiscUtil库有一些Unicode的支持范围内 - 这是原始的,但它应该做的工作。我现在没有提供源代码,但稍后如果有帮助,稍后会更新此帖子。

+0

乔恩,你不会碰巧有源得心应手,你会吗? – 2009-11-26 04:50:16

+0

@Zack:按照链接,你可以下载它:) – 2009-11-26 07:19:17

6

不知道一个完美的答案,但在维基百科上列出的一个Unicode范围katakanahiragana。 (我所期望的,也可以从unicode.org为好。)

  • 平假名:统一:3040-309F
  • 片假名:Unicode:当30A0-30FF

检查对输入的范围应以与语言无关的方式验证Unicode的平假名或片假名。

对于汉字,我认为它会更复杂一点,因为我希望中文和日文中的中文字符都包含在同一个范围内,但是我可能在这里是错的。 (我不能指望中国简体和繁体中国要包含在同一范围内......)

2

哦哦!我曾经有过这样的一次......我对平假名,然后是片假名,然后是汉字有一个正则表达式。我忘记了确切的代码,我会去看看。因为你双倍的问题

正则表达式是巨大的。而我这样做是在PHP中,我额外的强劲的汽车问题产生

- 编辑 -

$pattern = '/[^\wぁ-ゔァ-ヺー\x{4E00}-\x{9FAF}_\-]+/u'; 

选择,我发现这个here,但它不是很大......我将继续寻找

- 编辑 - 我通过便携式硬盘驱动器看上去....我想我一直保持,从上公司特定摘录...对不起。