ASP.NET MVC字符串格式化c# - 显示100个字符 - 修剪/剪切字符串的20个字符

时间:2010-08-23 10:57:33

标签: c# asp.net asp.net-mvc string

我有一点小麻烦。 我想只显示一个字符串的一部分,例如:

相反:“Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。”

只是一个:“Lorem ipsum dolor sit amet,consetetur sadipscing ......”

我可以使用哪种方法来做到这一点?

感谢您的帮助和照顾,Ragims

4 个答案:

答案 0 :(得分:19)

我使用字符串扩展方法来执行此操作。无论在哪里保存辅助方法,都可以将这样的方法添加到静态类中:

    /// <summary>
    /// Trim the front of a string and replace with "..." if it's longer than a certain length.
    /// </summary>
    /// <param name="value">String this extends.</param>
    /// <param name="maxLength">Maximum length.</param>
    /// <returns>Ellipsis shortened string.</returns>
    public static string TrimFrontIfLongerThan(this string value, int maxLength)
    {
        if (value.Length > maxLength)
        {
            return "..." + value.Substring(value.Length - (maxLength - 3));
        }

        return value;
    }

这将修剪字符串的前面,如果字符串的开头更重要,则很容易修复。然后在您的视图中使用它:

Here is my trimmed string: <%: Model.MyValue.TrimFrontIfLongerThan(20) %>

希望有所帮助!

答案 1 :(得分:2)

绝对substring。相信我,修剪是不够的;)

答案 2 :(得分:2)

我一直在做的是“短文”和长篇文章。为了避免这些话在中间切断。我不知道你的具体要求是什么。

如果无关紧要,请使用子字符串

答案 3 :(得分:1)

在网格行中执行此操作时,我执行了此操作:@ item.Body.Remove(300)并在此后添加省略号。请注意,您的起始索引必须大于字段中的值。我正在使用这个“Body”字段将在1000-4000个字符之间的东西,所以我知道300将始终有效。见下文:

@foreach (var item in Model) {
    <tr>
        <td>@Html.ActionLink(item.Headline, "Edit", new { id=item.AdvisoryId })</td>
        <td>@Html.Raw(item.Body.Remove(300))...</td>
        <td>@item.AdvisoryStartDate.ToShortDateString()</td>
        <td>@item.AdvisoryType.AdvisoryType</td>
        <td>@item.AdvisoryProvider.AdvisoryProvider</td>
        <td>@item.AdvisoryCategory.AdvisoryCategory</td>
        <td>@Html.ActionLink("View", "Details", new { id=item.AdvisoryId })</td>            
    </tr>
}

模型 - 帮助确保没有错误

[MinLength(300, ErrorMessage = "Body must be longer than 300 characters.")]
[MaxLength(4000, ErrorMessage = "Body cannot be longer than 4000 characters.")]
public string Body { get; set; }