Категоризация этого тайского персонажа с использованием .NET Framework - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь разобрать некоторый тайский текст в соответствии с правилами, описанными здесь http://www.thai -language.com / ref / spacing

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

Для разбора текста я попытался просто зациклить, как

while( Char.IsLetterOrDigit(theText[i++]) ) {}

, чтобы найти следующий символ, который не является буквой или цифрой. Это работает за исключением некоторых персонажей, подобных этому

Thai character

, который является вторым символом в этом слове (я думаю, что это символ «надстрочный знак» первого символа в слове).

Thai word

Похоже, что этот класс не относится ни к какому классу Char, то есть:

Char.IsLowSurrogate((char)3657)
Char.IsPunctuation((char)3657)
Char.IsWhiteSpace((char)3657)
Char.IsSymbol((char)3657)
Char.IsSeparator((char)3657)
Char.IsDigit((char)3657)
Char.IsControl((char)3657)
Char.IsLetter((char)3657)
Char.IsSurrogate((char)3657)

все возвращают false.

Этот символ может быть «тоном» - как его можно определить с помощью .NET?

1 Ответ

0 голосов
/ 04 сентября 2018

В соответствии со спецификациями Unicode, символ является mai tho и находится в группе «mark, nspacing (Mn)».

Вы можете использовать метод Char.GetUnicodeCategory() для проверки типа. Для меток без пробелов тип 5 или UnicodeCategory.NonSpacingMark

...