C#截取定长字符串函数

  • 格式:doc
  • 大小:34.00 KB
  • 文档页数:6

C#截取定长字符串函数.txt我很想知道,多少人分开了,还是深爱着。

ゝ自己哭自己笑自己看着自己闹。

你用隐身来躲避我丶我用隐身来成全你!待到一日权在手,杀尽天下负我狗。

/// <summary>/// 按字符串实际长度截取定长字符窜/// </summary>/// <param name="str">原字符串</param>/// <param name="length">要截取的长度</param>/// <returns>string型字符串</returns>public static string CutStr(string str, int length){int i = 0, j = 0;foreach (char chr in str){if ((int)chr > 127){i += 2;}else{i++;}if (i > length){str = str.Substring(0, j) + "...";break;}j++;}return str;}//方法三:public string CutStr(string sInString,int iCutLength){if(sInString==null || sInString.Length==0 || iCutLength<=0){return "";}intiCount=System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(sInString);if(iCount>iCutLength){int iLength=0;for(int i=0;i<sInString.Length;i++){intiCharLength=System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(newchar[]{sInString[i]});iLength += iCharLength;if(iLength==iCutLength){sInString=sInString.Substring(0,i+1);break;}else if(iLength>iCutLength){sInString=sInString.Substring(0,i);break;}}}return sInString;}//方法四:利用正则表达式区分英文、汉字,并截取字符串public static string CutStr(string stringToSub, int length){Regex regex = new Regex("[\u4e00-\u9fa5]+", piled); char[] stringChar = stringToSub.ToCharArray();StringBuilder sb = new StringBuilder();int nLength = 0;for (int i = 0; i < stringChar.Length; i++){if (regex.IsMatch((stringChar[i]).ToString())){nLength += 2;}else{nLength = nLength + 1;}if (nLength <= length){sb.Append(stringChar[i]);}else{break;}}if (sb.ToString() != stringToSub){sb.Append("...");}return sb.ToString();}//方法一:/// <summary>/// C#截取定长字符串函数/// </summary>/// <param name="string1">原字符串</param>/// <param name="Len1">长度(原字符串中全是汉字时的汉字个数)</param> /// <returns>截取后的字符串(ReCutStr)</returns>public static string CutStr(string string1, int Len1){string ReCutstr = string.Empty;bool Remark = false;//如果不够长度,为假int n = string1.Length;int TrueLen = 0;int Pcount = 0; //英文字计数int Gcount = 0; //中文字计数int Lcount = 0; //长度计数char[] bytes = string1.ToCharArray();foreach (char chrA in bytes){if (Convert.ToInt32(chrA) >= 0 && Convert.ToInt32(chrA) <= 255) {Pcount = Pcount + 1;}else //如果是中文{Gcount = Gcount + 1;}Lcount = (Pcount / 2) + Gcount;TrueLen = Pcount + Gcount;if (Lcount > Len1)//如果长度已够{ReCutstr = string1.Substring(0, TrueLen) + "...";Remark = true;break;}}if (!Remark)//如果是不够长度{ReCutstr = string1;}return ReCutstr;}//方法二:public static string CutStr(string input,int count){int tempcount = count;if (input == null){return string.Empty;}if (input.Length > count){try{int lencount = 0;int.TryParse(ContainsNumeral(input, count).ToString(), out lncount);count = lencount + count;if (input.Length > count){return input.Substring(0, count) + "...";}else{return input;}}catch{return input.Substring(0, tempcount) + "...";}}return input;}/// <summary>/// 过滤的字符串中存在数字时,“两个数字曾一个字”/// </summary>/// <param name="input"></param>/// <param name="count"></param>/// <returns></returns>public static double ContainsNumeral(string input, int count){string linput = input.Substring(0, count);double lcount = 0;int i = 0;//1.简单判断数字for (int k = 0; k < 10; k++){if (linput.Contains(k.ToString())){lcount += 0.5;i++;}}////2.全面判断数字//for (int j = 0; j < linput.Length; j++)//{// for (int k = 0; k < 10; k++)// {// if (linput.Substring(j, 1).Contains(k.ToString())) // {// lcount += 0.5;// i++;// break;// }// }//}if (i % 2 != 0){lcount += 0.5;} return lcount; }。