您的位置:首页 > 其它

获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数

2016-02-18 13:56 751 查看
/// <summary>
/// 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数
/// </summary>
/// <param name="strSub">输入中英混合字符串</param>
/// <param name="start">开始截取的起始位置</param>
/// <param name="length">要截取的字符串长度</param>
/// <returns></returns>
private string GetSubString(string strSub, int start, int length)
{
string temp = strSub;
int j = 0, k = 0, p = 0;

CharEnumerator ce = temp.GetEnumerator();
while (ce.MoveNext())
{
j += (ce.Current > 0 && ce.Current < 255) ? 1 : 2;

if (j <= start)
{
p++;
}
else
{
if (j == GetLength(temp))
{
temp = temp.Substring(p, k + 1);
break;
}
if (j <= length + start)
{
k++;
}
else
{
temp = temp.Substring(p, k);
break;
}
}
}

return temp;
}

/// <summary>
/// 获取指定字符串长度,汉字以2字节计算
/// </summary>
/// <param name="aOrgStr">要统计的字符串</param>
/// <returns></returns>
private int GetLength(String aOrgStr)
{
int intLen = aOrgStr.Length;
int i;
char[] chars = aOrgStr.ToCharArray();
for (i = 0; i < chars.Length; i++)
{
if (System.Convert.ToInt32(chars[i]) > 255)
{
intLen++;
}
}
return intLen;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: