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,但它不是很大......我將繼續尋找

- 編輯 - 我通過便攜式硬盤驅動器看上去....我想我一直保持,從上公司特定摘錄...對不起。