2012-03-25 1 views
1

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

К сожалению, я не смог найти способ в ОИТ для проверки действительности данного UChar32, представляющего блок кода. ICU действительно возвращает такой тип в некоторых функциях и не принимает такой UChar32 в некоторых функциях, но как он может быть уверен, что мы не будем давать ему недопустимое значение?

Я думаю, что где-то есть какая-то проверка действительности. Есть идеи?

+0

Почему вам нужен класс для представления кодового пункта? –

+0

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

+0

Мне не нужен класс по требованию, так как теперь это всего лишь класс общего назначения, содержащий связанные функции, такие как u_charDigitValue, u_getNumericValue, u_charName, u_isIDStart и т. Д. – csjpeter

ответ

1

Пропущено это раньше.

#include <unicode/uchar.h>

  • Valid (в-Unicode) UChar32 s будет между UCHAR_MIN_VALUE и UCHAR_MAX_VALUE включительно
  • Assigned (в отличие от Unassigned) UChar32 s будет evaulate ложно для (u_charType(ch) != U_UNASSIGNED)
+0

> U_UNASSIGNED \t > См. Примечание !!. > Комментарии формы «Cn» читаются genpname. Некатегория для неназначенных и несимвольных кодовых точек. – csjpeter

+0

Хорошая идея. Спасибо! Однако в документе говорится: «U_UNASSIGNED \t: Комментарии формы« Cn »читаются genpname. Некатегория для неназначенных и несимвольных кодовых точек.». Таким образом, этот трюк хорош для проверки того, является ли номер UChar32 символом юникода, но не говорит «да» для несимвольных кодовых точек. – csjpeter

+0

«Недопустимые кодовые точки: значения вне диапазона (меньше нуля или больше 10FFFF), непарные суррогатные значения (от D800 до DF00) и несимвольные значения (формы xxFFFF или xxFFFE)». Я чувствую, что мой ответ был неправильным. Несимметрия также является незаконным значением на основе этой документации. – csjpeter

Смежные вопросы