ASP.NET MVC форматирование строки c # - показать 20 символов из 100 - обрезать / вырезать строку - PullRequest
0 голосов
/ 23 августа 2010

У меня небольшая проблема. Я хочу показать только часть строки, например:

Вместо этого: «Lorem ipsum dolor sit amet, constetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volptua».

Просто: "Lorem Ipsum Dolor Sit Amet, Contetur Sadipscing ..."

Какой метод я могу использовать для этого?

Спасибо за помощь и заботу, Рагимс

Ответы [ 4 ]

19 голосов
/ 23 августа 2010

Я использую метод расширения строки, чтобы сделать это.Добавьте метод, подобный этому, к статическому классу, где бы вы ни хранили вспомогательные методы:

    /// <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) %>

Надеюсь, что помогает!

2 голосов
/ 23 августа 2010

То, что я всегда делаю, это «короткий текст» и длинный текст. Чтобы избежать этого, слова обрезаются посередине. Я не знаю, каковы ваши точные требования.

Если это не имеет значения, используйте подстроку

2 голосов
/ 23 августа 2010

определенно подстрока . Поверь мне, трима не достаточно;)

1 голос
/ 01 апреля 2013

Делая это в строке сетки, я делал это: @ 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; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...