Проверка ввода Kana

Я работаю над приложением, которое позволяет пользователям вводить символы японского языка. Я пытаюсь найти способ определить, является ли пользовательский ввод японской кана (хирагана, катакана или кандзи).

В приложении есть определенные поля, в которых ввод латинского текста будет неуместным, и мне нужен способ ограничить определенные поля только кандзи, или только katakana и т.д.

В проекте используется кодировка UTF-8. Я не ожидаю принятия JIS или ввода Shift-JIS.

Идеи?

3 ответа

Похоже, вам просто нужно просто проверить, находится ли каждый символ Юникода в определенном диапазоне. Хорошая отправная точка должна быть Unicode code chart.

Если вы используете .NET, моя библиотека MiscUtil имеет некоторую поддержку диапазона Unicode - она ​​примитивна, но она должна выполнять работу, У меня нет источника для передачи данных прямо сейчас, но он обновит это сообщение позже, если это будет полезно.


Не уверен в идеальном ответе, но есть диапазон Unicode для katakana и hiragana, перечисленные в Википедии. (Что я ожидаю, также можно получить из unicode.org.)

  • Хирагана: Юникод: 3040-309F
  • Катакана: Юникод: 30A0-30FF

Проверка этих диапазонов против ввода должна работать как подтверждение для hiragana или katakana для Unicode в агностическом языке.

Для кандзи я ожидаю, что это будет немного сложнее, поскольку я ожидайте, что китайские иероглифы, используемые на китайском и японском языках, включены в один и тот же диапазон, но опять же, я могу ошибаться. (Я не могу ожидать, что Упрощенный китайский и традиционный китайский будут включены в один и тот же диапазон...)


О, о! У меня был этот один раз... У меня было регулярное выражение с хираганой, потом катаканой, а затем и кандзи. Я забываю точные коды, я пойду посмотрю.

regex отлично, потому что вы удваиваете проблемы. И я сделал это в PHP, мой выбор для создания более сильной генерации автоматических проблем

- редактировать -

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

Я нашел здесь здесь, но это не здорово... Я продолжу искать

- edit-- Я просмотрел свой портативный жесткий диск... Я думал, что сохранил этот фрагмент из последней компании... извините.

licensed under cc by-sa 3.0 with attribution.