Проверка ввода Кана

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

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

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

Идеи?

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Валидация полей ввода для базовой формы React
Валидация полей ввода для базовой формы React
В одном из моих проектов MERN Stack есть форма с именем, фамилией, контактным номером, адресом, электронной почтой, датой рождения, номером NIC, весом...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
4
0
7 774
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не уверен в идеальном ответе, но в Википедии есть диапазон Unicode для катакана и хирагана. (Которые, как я ожидал, также доступны в unicode.org.)

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

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

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

Ответ принят как подходящий

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

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

Джон, у тебя не было бы источника под рукой, не так ли?

Zack The Human 26.11.2009 07:50

@Zack: Пройдите по ссылке и сможете скачать :)

Jon Skeet 26.11.2009 10:19

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

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

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

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

Нашел этот здесь, но он не отличный ... Буду искать

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

Раньше я использовал тот же диапазон для канджи (4E00 ~ 9FAF), но проверил его в диаграммах юникода и обнаружил, что полный диапазон немного больше: 4E00 ~ 9FFF. Хотя, вероятно, он содержит символы, которые не используются (больше?) В японском языке.

d-_-b 03.11.2010 07:54

Ввод японских иероглифов в исходный файл - плохая практика.

zawhtut 10.01.2013 08:21

Другие вопросы по теме