在页面上经常要用到指定显示多少个字符,超过部分就用省落号表示,这里有两个方法:
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);