public bool IsChinese(char chr)
{
bool isChinese = false;
//if ((int)str[i] > 127)//判断是否是汉字
if ((int)chr > 0x4E00 && (int)chr < 0x9FA5)
{
isChinese = true;
}
else
{
isChinese = false; ;
}
return isChinese;
}
/// <summary>
/// 截取字符串,不限制字符串长度
/// </summary>
/// <param name="str">待截取的字符串</param>
/// <param name="len">每行的长度,多于这个长度自动换行</param>
/// <returns></returns>
public string CutStr(string str, int len)
{
//设备完善的灌溉机井2条,泵站1条,排水沟\r\n1条,灌溉机井1个,排水沟1个,出水孔1个,\r\n闸1个
//正常情况下,我们是直接去string的length的,但是汉字是有两个字节的
StringBuilder sb = new StringBuilder();
int count = 0;//统计个数
for (int i = 0; i < str.Length; i++)
{
char chr = str[i];
if (IsChinese(chr))
{
count += 2;
}
else
{
count += 1;
}
if (count == len)
{
sb.Append(chr + "\r\n");
count = 0;
}
else if (count > len)
{
sb.Append("\r\n" + chr);
if (IsChinese(chr))
{
count = 2;
}
else
{
count = 1;
}
}
else
{
sb.Append(chr);
}
}
return sb.ToString();
}
/// <summary>
/// 截取字符串,不限制字符串长度
/// </summary>
/// <param name="str">待截取的字符串</param>
/// <param name="len">每行的长度,多于这个长度自动换行</param>
/// <returns></returns>
public string CutStr2(string str, int len)
{
//汉字和数字都当做一个个字节
string result = string.Empty;
int strLenth = System.Text.Encoding.Default.GetByteCount(str);
for (int i = 0; i < strLenth; i++)
{
int r = i % len;
int last = (str.Length / len) * len;
if (i != 0 && i <= last)
{
if (r == 0) //换行
{
result += str.Substring(i - len, len) + "\r\n";
}
}
else if (i > last)
{
result += str.Substring(i - 1);
break;
}
}
return result;
}