亲自测试过,很好用的ASP.NET字符串截取函数,自己搜集了以下三种,自己比较喜欢第一种
#region 截取指定字数字符串
/// <summary>
/// 格式化字符串,取字符串前 strLength 位,其他的用...代替.
/// 计算字符串长度。汉字两个字节,字母一个字节
/// </summary>
/// <param name="str">字符串</param>
/// <param name="strLength">字符串长度</param>
/// <returns></returns>
public static string FormatStr(string str, int len)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
string tempString = "";
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{ tempLen += 2; }
else
{ tempLen += 1; }
try
{ tempString += str.Substring(i, 1); }
catch
{ break; }
if (tempLen > len) break;
}
//如果截过则加上半个省略号
byte[] mybyte = System.Text.Encoding.Default.GetBytes(str);
if (mybyte.Length > len)
tempString += "......";
tempString = tempString.Replace(" ", " ");
tempString = tempString.Replace("<", "<");
tempString = tempString.Replace(">", ">");
tempString = tempString.Replace('\n'.ToString(), "<br>");
return tempString;
}
#endregion
**////
/// 截取字符串,不限制字符串长度
///
/// 待截取的字符串
/// 每行的长度,多于这个长度自动换行
///
public string CutStr(string str,int len)
{ string s="";
for(int i=0;i 11 {
int r= i% len;
int last =(str.Length/len)*len;
if (i!=0 && i<=last)
{
if( r==0)
{
s+=str.Substring(i-len,len)+"
";
}
}
else if (i>last)
{
s+=str.Substring(i-1) ;
break;
}
}
return s;
}
/**////
/// 截取字符串并限制字符串长度,多于给定的长度+。。。
///
/// 待截取的字符串
/// 每行的长度,多于这个长度自动换行
/// 输出字符串最大的长度
///
public string CutStr(string str,int len,int max)
{
string s="";
string sheng="";
if (str.Length >max)
{
str=str.Substring(0,max) ;
sheng="";
}
for(int i=0;i 53 {
int r= i% len;
int last =(str.Length/len)*len;
if (i!=0 && i<=last)
{
if( r==0)
{
s+=str.Substring(i-len,len)+"
";
}
}
else if (i>last)
{
s+=str.Substring(i-1) ;
break;
}
}
return s+sheng;
}