我在剃刀页面中有@Html.Raw(Model.Content)
,我想提取截断到232-240个字符附近的字边界的摘录(纯文本),然后是...
。这有什么帮手吗?
相当于Ruby on Rail的truncate_html宝石。用法:
strip_tags(truncate_html(my_model.content, :length => 240, :omission => '...'))
答案 0 :(得分:3)
使用这些扩展方法解决了这个问题:
public static string TruncateHtml(this string input, int length = 300,
string ommission = "...")
{
if (input == null || input.Length < length)
return input;
int iNextSpace = input.LastIndexOf(" ", length);
return string.Format("{0}" + ommission, input.Substring(0, (iNextSpace > 0) ?
iNextSpace : length).Trim());
}
public static string StripTags(this string markup)
{
try
{
StringReader sr = new StringReader(markup);
XPathDocument doc;
using (XmlReader xr = XmlReader.Create(sr,
new XmlReaderSettings()
{
ConformanceLevel = ConformanceLevel.Fragment
// for multiple roots
}))
{
doc = new XPathDocument(xr);
}
return doc.CreateNavigator().Value; // .Value is similar to .InnerText of
// XmlDocument or JavaScript's innerText
}
catch
{
return string.Empty;
}
}
用法:
@Html.Raw(Model.Content.StripTags().TruncateHtml(240, "..."))
答案 1 :(得分:0)
您可以创建自己的方法,请参阅此示例,我们将其作为扩展创建。 然后你可以使用它像“带有大量文本的字符串”.TrimString(11); 输出将是“String with ...”
您应该能够添加逻辑,以便不会破坏单词。
public static string TrimString(this string text, int length = 300)
{
if (text.Length > length)
{
return text.Substring(text.Length - (length - 3)) + "...";
}
return text;
}