字符串长度不正确导致的泰语字符串操作问题

时间:2015-02-28 06:35:09

标签: c# string encoding utf-8 thai

我想在泰语文本中突出显示一些子字符串:

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

问题是,myString字符串包含一个特殊的泰语字符(&#34;เงินฝาก&#34;)。给定的字符串长度应为7,但长度分辨为6.它仅部分突出显示文本,不包括最后一个字符。

我尝试过对字符串进行编码(包括高字符串和myString字符串)。但它没有用。你有关于如何处理这个问题的任何提示吗?我也尝试了Replace方法,但无济于事。

提前致谢!

1 个答案:

答案 0 :(得分:-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;
    }