Тайские проблемы со строками, вызванные неправильной длиной строки

Я пытаюсь выделить некоторую подстроку в тайском тексте:

high = high.Insert(myString.Index + myString.Length + "<b>" + currentLength, "</b>");

Проблема в том, что myString Строка содержит специальный тайский символ ("เงินฝาก"). Заданная строка должна иметь длину 7, но длина определяется как 6. Который выделяет текст только частично, не включая последний символ.

Я пытался кодировать строку (как высокий, так и myString строка). Но это не сработало. Есть ли у вас какие-либо советы, как с этим справиться? Я также попробовал Replace метод, но безрезультатно.

Заранее спасибо!

1 ответ

Простая концепция состоит в том, чтобы игнорировать подсчет тайского символа верхнего и нижнего индексов, как в примере кода ниже:

    public int ThaiLength(string text)
    {
        int c = 0;
        int l = text.Length;

        for (int i = 0; i < l; ++i)
        {
            if (char.GetUnicodeCategory(text[i]) != System.Globalization.UnicodeCategory.NonSpacingMark)
                ++c;
        }

        return c;
    }
Другие вопросы по тегам