我有一点小麻烦。 我想只显示一个字符串的一部分,例如:
相反:“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
答案 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; }