首页 新闻 会员 周边

怎么获取字符串输出到页面的后长度(像素),如果太长我就要用...代替

0
[已关闭问题]

怎么获取字符串输出到页面的后长度(像素),如果太长我就要用...代替

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:37
提问于:2010-05-23 11:02
< >
分享
其他回答(3)
0

根据你显示的字号和字体,和要显示的字符串的长度,可以得出大概的长度。或者这样的需求根本没有必要,你只要在后台代码中,修改超过指定长度的字符串后面的字符为…后,再输出到前台即可

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2010-05-23 13:48
0

因为字体大小所占的像素也不一样,所以一般的做法就是截取固定的字符并加“...”。

/// <summary>
/// 截取字符串指定的长度并加上省略号 以字节形式计算
/// </summary>
/// <param name="inputString">字符串</param>
/// <param name="len">截取长度,以字节形式计算</param>
/// <returns></returns>
public static string CutStrMit(string inputString, int len)
{
    ASCIIEncoding ascii = new ASCIIEncoding();
    int tempLen = 0;
    string tempString = "";
    byte[] s = ascii.GetBytes(inputString);
    for (int i = 0; i < s.Length; i++)
    {
        if ((int)s[i] == 63)
        {
            tempLen += 2;
        }
        else
        {
            tempLen += 1;
        }

        try
        {
            tempString += inputString.Substring(i, 1);
        }
        catch
        {
            break;
        }

        if (tempLen > len)
            break;
    }
    //如果截过则加上半个省略号
    byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
    if (mybyte.Length > len)
        tempString += "...";

    return tempString;
}

Astar | 园豆:40805 (高人七级) | 2010-05-23 13:57
0

是这样子的,如果说你这个问题时web页面上在一个标签中加入内容,内容如果超过指定的长度就用...来代替,这个一般来说使用css属性就可以了,属性是 text-overflow:ellipsis这样子,你可以参考http://www.div-css.com/html/standard/tech98926118542968.html  此文章的实现

不过说实在话,用程序来实现字符长度计算然后加...这个太得不偿失了.

西越泽 | 园豆:10775 (专家六级) | 2010-05-23 15:47
0

如果要在显示页面中长度超过一个长度后省略后面字符加“...”,

直接在页面绑定处添加如下代码:

<%#Eval("字段").ToString().lenght>10?Eval("字段").ToString().substring(0,10):Eval("字段")%>

邢少 | 园豆:10926 (专家六级) | 2010-05-24 09:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册