c# 超长字符串截取固定长度后显示...(超长后面显示点点点) 通用方法

通用方法:

此方法是采用unicode编码方式,一个汉字为2个字节,一个数字or字母是1个字节,此方法传入的第二个长度参数是unicode长度。

所以不用考虑截取的字符串是汉字还是英文字母的问题,参数length 可以理解为应该显示的宽度即可。

 

 1   public string GetFirstString(string stringToSub, int length)
 2         {
 3             Regex regex = new Regex(@"[\u4e00-\u9fa5]+", RegexOptions.Compiled);
 4             char[] stringChar = stringToSub.ToCharArray();
 5             StringBuilder sb = new StringBuilder();
 6             int nLength = 0;
 7             for (int i = 0; i < stringChar.Length; i++)
 8             {
 9                 if (regex.IsMatch((stringChar[i]).ToString()))
10                 {
11                     nLength += 2;
12                 }
13                 else
14                 {
15                     nLength = nLength + 1;
16                 }
17 
18                 if (nLength <= length)
19                 {
20                     sb.Append(stringChar[i]);
21                 }
22                 else
23                 {
24                     break;
25                 }
26             }
27             if (sb.ToString() != stringToSub)
28             {
29                 sb.Append("...");
30             }
31             return sb.ToString();
32         }

调用方法:
string NewStr = GetFirstString(OldStr, 25);//第一个参数原字符串,第二个参数截断的长度

 

posted @ 2013-08-20 14:43  沙漠绿洲uibe  阅读(1379)  评论(0编辑  收藏  举报