//c#的中英文混合字符串截取指定长度,startidx从0开始 by gisoracle@126.com
- public string getStrLenB(string str, int startidx, int len)
- {
- int Lengthb = getLengthb(str);
- if (startidx + 1 > Lengthb)
- {
- return "";
- }
- int j = 0;
- int l = 0;
- int strw = 0;//字符的宽度
- bool b = false;
- string rstr = "";
- for (int i = 0; i < str.Length; i++)
- {
- char c = str[i];
- if (j >= startidx)
- {
- rstr = rstr + c;
- b = true;
- }
- if (IsChinese(c))
- {
- strw = 2;
- }
- else
- {
- strw = 1;
- }
- j = j + strw;
- if (b)
- {
- l = l + strw;
- if ((l+1)>= len) break;
- }
- }
- return rstr;
- }