详细内容
超过长度部分用省落号表示
发布日期:2010-07-03     点击:2522     字体:[ ]

在页面上经常要用到指定显示多少个字符,超过部分就用省落号表示,这里有两个方法:

1。判断长度

以10为标准,超过部分将截取前十个,后面部分用省落号表示

string str = "www.zdbase.com";

if(str.Length > 10)
{str = str.Substring(0,10) + "...";}

2。用三目运算符

string str = "www.zdbase.com";

str = str.Length > 10 ? str.Substring(0,10) + "..." : str;

3。以上都是针对非中文而言,如果字符串里即包含中文又包含非中文,这样用以上判断长度就不对了,因为10的中文长度和10个英文字母长度是不同的,一个中文占两个字节,而一个英文字符只占一个字节,所以,这里可用:System.Text.ASCIIEncoding.Default.GetBytes(str).Length来判断长度,例如:

string str = "www.zdbase.com";

string tempStr="";
int i = 0;

if(str.Length > 5)

{

while(System.Text.ASCIIEncoding.GetEncoding("gb2312").GetBytes(tempStr).Length < 5)
{
     tempStr += str[i];
     i++;
}

tempStr += "...";
str = tempStr;

}

这里的str其长度应该控制在5,如果是中文应该是3个汉字。

4。也可以定义一个函数,放在App_Code里,这样可以方便使用,例如:

public class Common
{
 public Common()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }

    /// <summary>
    /// 截取指定长度的字符串,超过部分用省略号表示
    /// </summary>
    /// <param name="aim">原字符串</param>
    /// <param name="num">截取长度</param>
    /// <returns>返回值</returns>
    public static string getString(string aim, int num)
    {
        string str = "";
        int i = 0;

        //判断长度
        while (System.Text.ASCIIEncoding.GetEncoding("gb2312").GetBytes(str).Length < num)
        {
            str += aim[i];
            i++;
        }

        str += "...";
        return str;
    }
}

这样可以直接在html页面里调用:

<%= Common.getString(str, 5)%>

在后台代码里调用就更简单了:

string str = Common.getString(str,5);

用户评论
昵称 
内容  *
验证码   
   
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号 可人软件设计