Последовательность кодовых точек составляет один слог / букву / символ во многих других не западноевропейских языках (например, во всех индийских языках)
Итак, когда вы подсчитываете длину ИЛИ находите подстроку (безусловно, есть случаи нахождения подстрок - скажем, играете в игру палача), вам нужно продвигать слог по слогу, а не по коду за кодом. .
Таким образом, определение символа / слога и того, где вы фактически разбиваете строку на «кусочки слогов», зависит от природы языка, с которым вы имеете дело.
Например, структура слогов во многих индийских языках (хинди, телугу, каннада, малаялам, непальский, тамильский, пенджабский и т. Д.) Может быть любой из следующих
V (Vowel in their primary form appearing at the beginning of the word)
C (consonant)
C + V (consonant + vowel in their secondary form)
C + C + V
C + C + C + V
Вам необходимо проанализировать строку и найти приведенные выше шаблоны, чтобы разбить строку и найти подстроки.
Я не думаю, что возможно иметь метод общего назначения, который может волшебным образом разбивать строки описанным выше способом для любой строки Unicode (или последовательности кодовых точек) - поскольку шаблон, который работает для одного языка, может быть неприменим для другого письма;
Я предполагаю, что могут быть некоторые методы / библиотеки, которые могут принимать некоторые параметры определения / конфигурации в качестве входных данных для разбиения строк Юникода на такие слоги. Не уверен, хотя! Цените, если кто-то может поделиться тем, как они решили эту проблему, используя любые коммерчески доступные или открытые методы.