5

我正在开发一个允许用户输入日语字符的应用程序。我试图想出一种方法来确定用户的输入是否是日语假名(平假名、片假名或汉字)。

应用程序中的某些字段不适合输入拉丁文本,我需要一种方法将某些字段限制为仅限汉字或仅限片假名等。

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

想法?

4

3 回答 3

6

不确定一个完美的答案,但维基百科上列出了片假名平假名的 Unicode 范围。(我希望也可以从unicode.org获得。)

  • 平假名:Unicode:3040-309F
  • 片假名:Unicode:30A0–30FF

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

对于汉字,我希望它会稍微复杂一点,因为我希望中文和日文中使用的汉字都包含在同一个范围内,但话又说回来,我可能在这里错了。(我不能指望简体中文和繁体中文被包含在同一个范围内......)

于 2008-12-23T07:39:16.477 回答
6

听起来您基本上只需要检查每个 Unicode 字符是否在特定范围内。Unicode 代码图表应该是一个很好的起点。

如果您使用的是 .NET,我的MiscUtil库有一些 Unicode 范围支持——它是原始的,但它应该可以完成这项工作。我现在手头没有资源,但如果有帮助的话,稍后会用一个例子更新这篇文章。

于 2008-12-23T07:40:42.777 回答
2

哦哦!我曾经有过这个......我有一个带有平假名的正则表达式,然后是片假名,然后是汉字。具体代码我忘记了,我去看看。

正则表达式很棒,因为您将问题加倍。我是用 PHP 做的,我选择了更强大的自动问题生成

- 编辑 -

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

我在这里找到了这个,但它不是很好......我会继续寻找

--edit-- 我查看了我的便携式硬盘驱动器......我以为我保留了上一家公司的那个特定片段......对不起。

于 2009-04-24T06:49:58.063 回答