Asp.net 如果字符串为';它比预期的大?

Asp.net 如果字符串为';它比预期的大?,asp.net,string,Asp.net,String,我目前有一个字符串,我想限制为200个字符 我不知道如何格式化它,所以如果它少,它不会改变,但如果它多,它会修剪它 这是在ListView控件中,而不是在中继器中。对不起,我弄错了 <ItemTemplate> <div class="portfolio_title"> <div class="custom_title"> <%# DataBinder.Eval(Container.DataItem, "Title")%></div>

我目前有一个字符串,我想限制为200个字符

我不知道如何格式化它,所以如果它少,它不会改变,但如果它多,它会修剪它

这是在ListView控件中,而不是在中继器中。对不起,我弄错了

<ItemTemplate>
<div class="portfolio_title">
<div class="custom_title">
<%# DataBinder.Eval(Container.DataItem, "Title")%></div>
</div>
<asp:Literal ID="LiteralArticle" runat="server"></asp:Literal>
<%# DataBinder.Eval(Container.DataItem, "Article")%><br />
<a href="NewsFull.aspx?id=<%# DataBinder.Eval(Container.DataItem, "id")%>">Read Full Article...</a>
<div class="page_line">
</div>
</ItemTemplate>

你是说像

int maxLength = 200;
string trimmed = (trimmed.length > maxLength) ? trimmed.Substring(0,maxlength) : trimmed ;

下面是一些我用于这类事情的代码。将其附加到OnRowDataBound事件。这将截断为50个字符,并添加省略号“…”


我想这是在一个网格或什么。。。我将调用一个函数并将您的求值作为参数传递:

我的例子是:

<asp:Image ID="imgTopLevelTickCross" runat="server" ImageUrl='<%# "/images/" &  getImage(Eval("DrwgID").toString()) & ".gif" %> ' />

这可能比你需要的多一点,但在大多数情况下对我来说都很好。如果处理文件,它会保留文件结尾,如果需要,还会在短端字符串的末尾添加“…”

    /// <summary>
    /// Shortens a long string. Optionally keeps the file ending and adds a placeholder at the end.
    /// </summary>
    /// <example>
    /// Input:  ThisIsAVeryLongFilenameForThisTest.doc (length=10, placeholder='...', saveFileEnding=true)
    /// Output: ThisIsAVeryLong
    /// </example>
    /// <param name="value"></param>
    /// <param name="length"></param>
    /// <param name="placeHolder"></param>
    /// <param name="saveFileEnding"></param>
    /// <returns></returns>
    public static string ShowSummary(string value, int length, string placeHolder, bool saveFileEnding)
    {
        int lengthNew = length;
        string fileEnding = "";

        //nothing to do if the string is short enough
        if (length > value.Length)
        {
            return value;
        }

        if (saveFileEnding)
        {
            int index = value.LastIndexOf(".");

            if (index != -1)
            {
                fileEnding = value.Substring(index);
                lengthNew = length - fileEnding.Length;
            }
        }

        //substract the length of the placeholder
        lengthNew = lengthNew - placeHolder.Length;

        if (lengthNew > 0)
        {
            return value.Substring(0, lengthNew) + placeHolder + fileEnding;
        }
        else
        {
            //something is weird, maybe a really long filending or a '.' in the filename, so just cut it down 
            return value.Substring(0, length);
        }
    }//ShowSummary
//
///缩短一根长绳子。(可选)保持文件结尾并在结尾添加占位符。
/// 
/// 
///输入:ThisisAveryLongFileNameforHistTest.doc(长度=10,占位符=“…”,saveFileEnding=true)
///输出:ThisIsAVeryLong
/// 
/// 
/// 
/// 
/// 
/// 
公共静态字符串ShowSummary(字符串值、整型长度、字符串占位符、bool saveFileEnding)
{
int lengthNew=长度;
字符串fileEnding=“”;
//如果字符串足够短,则无需执行任何操作
如果(长度>值.长度)
{
返回值;
}
如果(保存文件结束)
{
int index=value.LastIndexOf(“.”);
如果(索引!=-1)
{
fileEnding=value.Substring(索引);
lengthNew=length-fileEnding.length;
}
}
//减去占位符的长度
lengthNew=lengthNew-占位符.Length;
如果(lengthNew>0)
{
返回值。子字符串(0,lengthNew)+占位符+文件结尾;
}
其他的
{
//有些东西很奇怪,可能是一个很长的文件名或文件名中的“.”,所以把它删掉吧
返回值。子字符串(0,长度);
}
}//节目摘要

这是一种合理的方法。但是,根据OP所具有的层,我建议在数据模型上创建一个新字段,如“ShortBigText”,并在其中实现缩短操作。@silky-这是一个很好的观点。我会使它成为一个方法,而不是一个属性,尽管更改
BigText
属性会更改
ShortBigText
返回的值。这将违反属性独立性。有一个Win32方法可以执行此操作-
[DllImport(“shlwapi.dll,CharSet=CharSet.Auto)]静态外部布尔路径compactPathEx([Out]StringBuilder pszOut,string szPath,int-cchMax,int-dwFlags)Public Function getImage(ByVal drwgID As Integer) As String


If TopLevelDrwgID = drwgID Then

        Return "True"
    Else
        Return "blank"
    End If
End Function
    /// <summary>
    /// Shortens a long string. Optionally keeps the file ending and adds a placeholder at the end.
    /// </summary>
    /// <example>
    /// Input:  ThisIsAVeryLongFilenameForThisTest.doc (length=10, placeholder='...', saveFileEnding=true)
    /// Output: ThisIsAVeryLong
    /// </example>
    /// <param name="value"></param>
    /// <param name="length"></param>
    /// <param name="placeHolder"></param>
    /// <param name="saveFileEnding"></param>
    /// <returns></returns>
    public static string ShowSummary(string value, int length, string placeHolder, bool saveFileEnding)
    {
        int lengthNew = length;
        string fileEnding = "";

        //nothing to do if the string is short enough
        if (length > value.Length)
        {
            return value;
        }

        if (saveFileEnding)
        {
            int index = value.LastIndexOf(".");

            if (index != -1)
            {
                fileEnding = value.Substring(index);
                lengthNew = length - fileEnding.Length;
            }
        }

        //substract the length of the placeholder
        lengthNew = lengthNew - placeHolder.Length;

        if (lengthNew > 0)
        {
            return value.Substring(0, lengthNew) + placeHolder + fileEnding;
        }
        else
        {
            //something is weird, maybe a really long filending or a '.' in the filename, so just cut it down 
            return value.Substring(0, length);
        }
    }//ShowSummary