截取字符串是我们经常会面临的一个问题,ASP.NET是如何截取字符串的呢,下面分享2个asp.net截取字符的函数,1个可以截取指定长度的字符串函数,1个可以随意截取。
这个函数可以截取指定的字符位数,超出的部分用…显示
/// 格式化字符串,取字符串前 strLen位,其他的用...代替. /// 计算字符串长度。汉字两个字节,字母一个字节 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; }
publicstringGetContent(stringstr,stringstart,stringlast,intn) { if(str.ToLower().IndexOf(start.ToLower())>=0) { if(str.ToLower().IndexOf(last.ToLower())>=0) { switch(n) { //左右都截取(都取前面)(包含关键字) case1: str=str.Substring(str.ToLower().IndexOf(start.ToLower()),str.Length-str.ToLower().IndexOf(start.ToLower()));str=str.Substring(0,str.ToLower().IndexOf(last.ToLower())+last.Length);break; //左右都截取(都取前面)(去除关键字) case2: str=str.Substring(str.ToLower().IndexOf(start.ToLower())+start.Length, str.Length-str.ToLower().IndexOf(start.ToLower())-start.Length); str=str.Substring(0,str.ToLower().IndexOf(last.ToLower()));break; //左右都截取(都取后面)(包含关键字) case3: str=str.Substring(str.ToLower().LastIndexOf(start.ToLower()),str.Length-str.ToLower().LastIndexOf(start.ToLower()));str=str.Substring(0,str.ToLower().LastIndexOf(last.ToLower())+last.Length);break; //左右都截取(都取后面)(去除关键字) case4: str=str.Substring(str.ToLower().LastIndexOf(start.ToLower())+start.Length, str.Length-str.ToLower().LastIndexOf(start.ToLower())-start.Length); str=str.Substring(0,str.ToLower().LastIndexOf(last.ToLower()));break; //左右都截取(一前一后)(包含关键字) case5: str=str.Substring(str.ToLower().IndexOf(start.ToLower()),str.Length-str.ToLower().IndexOf(start.ToLower()));str=str.Substring(0,str.ToLower().LastIndexOf(last.ToLower())+last.Length);break; //左右都截取(一前一后)(去除关键字) case6: str=str.Substring(str.ToLower().IndexOf(start.ToLower())+start.Length, str.Length-str.ToLower().IndexOf(start.ToLower())-start.Length); str=str.Substring(0,str.ToLower().LastIndexOf(last.ToLower()));break; default: str="";break; } } else { switch(n) { //只往左截取(取前面的)(包含关键字) case7: str=str.Substring(0,str.ToLower().IndexOf(start.ToLower())+start.Length);break; //只往左截取(取前面的)(去除关键字) case8: str=str.Substring(0,str.ToLower().IndexOf(start.ToLower()));break; //只往左截取(取后面的)(包含关键字) case9: str=str.Substring(0,str.ToLower().LastIndexOf(start.ToLower())+start.Length);break; //只往左截取(取后面的)(去除关键字) case10: str=str.Substring(0,str.ToLower().LastIndexOf(start.ToLower()));break; //只往右截取(取前面的)(包含关键字) case11: str=str.Substring(str.ToLower().IndexOf(start.ToLower()),str.Length-str.ToLower().IndexOf(start.ToLower()));break; //只往右截取(取前面的)(去除关键字) case12: str=str.Substring(str.ToLower().IndexOf(start.ToLower())+start.Length, str.Length-str.ToLower().IndexOf(start.ToLower())-start.Length);break; //只往右截取(取后面的)(包含关键字) case13: str=str.Substring(str.ToLower().LastIndexOf(start.ToLower()),str.Length-str.ToLower().LastIndexOf(start.ToLower()));break; //只往右截取(取后面的)(去除关键字) case14: str=str.Substring(str.ToLower().LastIndexOf(start.ToLower())+start.Length, str.Length-str.ToLower().LastIndexOf(start.ToLower())-start.Length);break; default: str="无";break; } } } else { str="无!"; } returnstr; }