C# 显示html编码文本中的x个单词

C# 显示html编码文本中的x个单词,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我使用以下代码显示数据库中的html编码文本: @Html.Raw(HttpUtility.HtmlDecode(@item.Content)) 我现在想做的是只显示内容的20个单词,并在结尾显示“…”。我该怎么做?我正在考虑为IHtmlString添加一个帮助器,但我不知道如何返回IHtmlString的x单词 我该怎么做 您可以编写一个自定义HTML助手,负责将输入字符串解析为组成词,并获取其中的第一个x: public static class HtmlExtensions {

我使用以下代码显示数据库中的html编码文本:

@Html.Raw(HttpUtility.HtmlDecode(@item.Content))
我现在想做的是只显示内容的20个单词,并在结尾显示“…”。我该怎么做?我正在考虑为IHtmlString添加一个帮助器,但我不知道如何返回IHtmlString的x单词

我该怎么做

您可以编写一个自定义HTML助手,负责将输入字符串解析为组成词,并获取其中的第一个
x

public static class HtmlExtensions
{
    private readonly static Regex _wordsRegex = new Regex(
        @"\s", RegexOptions.Compiled
    );

    public static IHtmlString FormatMessage(
        this HtmlHelper htmlHelper, 
        string message, 
        int count = 20
    )
    {
        if (string.IsNullOrEmpty(message))
        {
            return new HtmlString(string.Empty);
        }

        var words = _wordsRegex.Split(message);
        if (words.Length < count)
        {
            return new HtmlString(htmlHelper.Encode(message));
        }

        var result = string.Join(
            " ", 
            words.Select(w => htmlHelper.Encode(w)).Take(count)
        );
        return new HtmlString(result + " ...");
    }
}
或者,如果要指定不同的字数:


厉害!谢谢你,达林·迪米特洛夫
@Html.FormatMessage(item.Content)
@Html.FormatMessage(item.Content, 5)