下面是我写的一个方法,我的思路是,首先判断一个字符串的字节长度,
“注意我是要按字节长度来切割字符串”,如果大于指定长度,就读取指定长度的
字符串,然后放入 list《string》,然后将这一节字符串切割掉,然后从头开始切割,
但我的方法不完善,希望大神能帮我改一改,
string str="这是一个zifuchuan"我想按6个字节长度切割成
“这是一” ,“个zifu”,“chuan”,
下面是我的方法
private List GetString(string str, int len)
{
string result = string.Empty;
int byteLen = System.Text.Encoding.Default.GetByteCount(str);
int charLen = str.Length;
int byteCount = 0;
int pos = 0;
List srrarr = new List();
if (byteLen > len)
{
for (int i = 0; i < charLen; i++)
{
if (Convert.ToInt32(str.ToCharArray()[i]) > 255)// 按中文字符计算加2
byteCount += 2;
else// 按英文字符计算加1
byteCount += 1;
if (byteCount > len)// 超出时只记下上一个有效位置
{
pos = i;
break;
}
else if (byteCount == len)// 记下当前位置
{
pos = i + 1;
break;
}
}
if (pos >= 0)
result = str.Substring(0, pos);
srrarr.Add(result);
str.Replace(result, "");
}
else
result = str;
srrarr.Add(result);
str.Replace(result, "");
return srrarr;
}