#22006/10/24 22:00:48
/// <summary>
/// 是否为双字节字符。
/// </summary>
public static bool IsTwoBytesChar(char chr)
{
string str =chr.ToString();
// 使用中文支持编码
Encoding ecode = Encoding.Default;
if (ecode.GetByteCount(str) == 2)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 量到字符串的宽度
/// 一个中文为二个宽度,单字节为一个宽度
/// </summary>
public static int StringRealLength(string str)
{
int len = 0;
char[] chr = str.ToCharArray();
for (int i = 0; i < chr.Length; i++)
{
if (IsTwoBytesChar(chr[i]))
len += 2;
else
len ++;
}
return len;
}
/// <summary>
/// 把字符串串截成一定长度
/// 一个中文为1个长度
/// </summary>
public static string CutString(string str, int maxLen)
{
if (StringRealLength(str) <= maxLen * 2)
{
return str;
}
else
{
int pos = 0;
for (int i = 0; i < str.Length; i++)
{
if (StringRealLength(str.Substring(0, i+1)) > (maxLen - 1) * 2)
{
pos = i;
break;
}
}
return str.Substring(0, pos) + "..";
}
}
非常大鱼