string test = "这是一个test";
int length1 = test.Length; //字符数
Console.WriteLine(length1); //8
test = test.Substring(0, 6); //按字符数截取的
Console.WriteLine(test); //这是一个te
int length2=System.Text.Encoding.Default.GetBytes("这是一个test").Length; //字节长度
Console.WriteLine(length2); //12(一个汉字占2个字节)
/// <summary>
/// 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节数
/// 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
/// 输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”,
/// 如果指定的字节数超过了字符串的字节数则加上"."符号
/// </summary>
/// <param name="str">输入的字符串</param>
/// <param name="length">截取的长度</param>
/// <returns>按指定"字节数"截取后的字符串</returns>
public static string GetSubString(string str,int length)
{
string strResult = string.Empty;
if (str == null || str == "" || length == 0)
{
return strResult;
}
//字符串的字节长度
int lengthByte = System.Text.Encoding.Default.GetBytes(str).Length;
//如果指定的字节数小于等于字符串的字节数
if (lengthByte >= length)
{
for (int i = 1; i <= str.Length; i++)
{
string temp = string.Empty;
//截取字符串
temp = str.Substring(0, i);
//字符串截取后的字节长度
int length2 = System.Text.Encoding.Default.GetBytes(temp).Length;
if (length2 > length)
{
strResult = str.Substring(0, i - 1);
break;
}
if (length2 == length)
{
strResult = temp;
break;
}
}
}
else//如果指定的字节数大于字符串的字节数,则在字符串的末尾加上"."
{
StringBuilder sb=new StringBuilder();
for (int j = 0; j < length - lengthByte; j++)
{
sb.Append(".");
}
strResult = str + sb.ToString();
}
//返回结果
return strResult;
}