字符串截取
/// <summary>
/// 截取字符串
/// </summary>
/// <param name="input">输入字符</param>
/// <param name="length">截取长度</param>
/// <param name="isChar">是否是单字节\r\nTrue:单字节长度. False:双字节长度</param>
/// <returns></returns>
public static string Truncate(string input, int length,bool isChar)
{
int tmpLenght = GetBytesLength(input);
int trunLength=0;
if (!isChar)
{
trunLength = length;
length *= 2;
}
else
{
trunLength = length / 2;
}
if (length >= tmpLenght)
return input;
tmpLenght = GetBytesLength(input.Substring(0, trunLength));
int tempT = 0;
bool isTrue = true;
while (isTrue)
{
tempT = (length - tmpLenght) / 2 + 1;
tmpLenght += GetBytesLength(input.Substring(trunLength, tempT));
if (tmpLenght > length)
{
isTrue = false;
tempT--;
trunLength += tempT;
}
else
trunLength += tempT;
}
return input.Substring(0, trunLength);
}
/// <summary>
/// 得到字符串的字节长度
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static int GetBytesLength(string input)
{
return Encoding.Default.GetByteCount(input.ToCharArray());
}
/// 截取字符串
/// </summary>
/// <param name="input">输入字符</param>
/// <param name="length">截取长度</param>
/// <param name="isChar">是否是单字节\r\nTrue:单字节长度. False:双字节长度</param>
/// <returns></returns>
public static string Truncate(string input, int length,bool isChar)
{
int tmpLenght = GetBytesLength(input);
int trunLength=0;
if (!isChar)
{
trunLength = length;
length *= 2;
}
else
{
trunLength = length / 2;
}
if (length >= tmpLenght)
return input;
tmpLenght = GetBytesLength(input.Substring(0, trunLength));
int tempT = 0;
bool isTrue = true;
while (isTrue)
{
tempT = (length - tmpLenght) / 2 + 1;
tmpLenght += GetBytesLength(input.Substring(trunLength, tempT));
if (tmpLenght > length)
{
isTrue = false;
tempT--;
trunLength += tempT;
}
else
trunLength += tempT;
}
return input.Substring(0, trunLength);
}
/// <summary>
/// 得到字符串的字节长度
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static int GetBytesLength(string input)
{
return Encoding.Default.GetByteCount(input.ToCharArray());
}