代码之家  ›  专栏  ›  技术社区  ›  Zack The Human

验证假名输入

  •  4
  • Zack The Human  · 技术社区  · 16 年前

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

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

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

    思想?

    3 回复  |  直到 12 年前
        1
  •  5
  •   Jon Skeet    16 年前

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

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

        2
  •  6
  •   coobird    16 年前

    不确定完美答案,但有一个Unicode范围用于 katakana hiragana 在维基百科上列出。(我想也可以从 unicode.org 同样如此。

    • 平假名:Unicode:3040-309F
    • 片假名:unicode:30a0_“30ff

    根据输入检查这些范围应该起到对平假名或片假名进行Unicode语言不可知性验证的作用。

    对于汉字,我希望它会更复杂一点,因为我 希望中文和日文中使用的汉字都包含在同一个范围内,但我可能又错了。(我不能指望简体中文和繁体中文在同一范围内…)

        3
  •  2
  •   Assembler    15 年前

    哦哦!我曾经有过一次……我和平假名,片假名,还有日文汉字有一个正则表达式。我忘了密码,我去看看。

    Regex很好,因为你把问题加倍了。我用PHP做的,这是我选择的特别强大的自动生成问题的工具。

    --编辑——

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

    我发现了这个 here 但是不太好…我会继续找的

    --编辑—— 我查看了我的便携式硬盘…我以为我保留了上一家公司的那一段话…对不起的。